O "New Neural" é um projecto de motor de rede neural Open Source para a plataforma MetaTrader 5. - página 40

 

Estas são funções para os coeficientes do ângulo sigmóide de ataque:

//+------------------------------------------------------------------+
double ytrans0(double y=0.5)// [0;0.5;1] --> [0;1;500.5] гипербола с перегибом в 0.5
  {
   double x=line0(y);
   return(x>0.5005?0.5005/(1.001-x):x*2.);
  }
//+------------------------------------------------------------------+
double ytrans1(double y=0.)// [-1;0;1] --> [0;1;500.5] сдвинутая гипербола с перегибом в 0.0
  {
   double x=(line1(y)+1.)/2.;
   return(x>0.5005?0.5005/(1.001-x):x*2.);
  }
//+------------------------------------------------------------------+

SZZ Vou explicar para que foi escrito isto:

tarefa: precisamos regular o ângulo sigmóide de ataque dos próprios neurônios, saídas dentro de [0;1] ou [-1;1].

Vamos considerar a variante com [0;1]. Na seção de 0 para 0,5 precisamos diminuir o ângulo de ataque, o que leva a uma diminuição da temperatura de saída, na seção de 0,5 para 1 pelo contrário, o ângulo deve aumentar, mas o principal é a suavidade e sem transições.

Você precisa de uma hiperbola com uma inflexão em um determinado ponto médio. Você pode usar apenas uma saída para controlar o ângulo de ataque, ou lidar com várias saídas como uma média aritmética, caso contrário você irá travar na direção do ângulo de ataque emitindo a função de limiar.

ZZY se as entradas dadas forem usadas, então line0() e line1() não são necessárias, mas então ytrans1() precisa mudar para a faixa de entrada [0;1].

 
TheXpert:

A propósito.

Precisamos de uma função do tipo sigmóide.

Os requisitos -- uma forma normal da função e sua derivada (não muito difícil de calcular) e uma forma normal da função inversa e sua derivada.

Estes são o inverso da função sigmóide acima.

//+------------------------------------------------------------------+
double Invsigma0(double c)//  вход [0;1] обратные
  {
   return(-log((1.-c)/c));
  }
//+------------------------------------------------------------------+
double Invsigma1(double c)//  вход [-1;1]
  {
   return(-log((1.-c)/(1.+c)));
  }
//+------------------------------------------------------------------+
double Dsigma0(double c)//  вход [0;1] производные
  {//exp(-c)/(1+exp(-c))^2
   double e=exp(-c);
   double c2=1.+e;
   return(e/(c2*c2));
  }
//+------------------------------------------------------------------+
double Dsigma1(double c)//  вход [-1;1]
  {// (2*E^-c)/(1+E^-c)^2 
   double e=exp(-c);
   double c2=1.+e;
   return(2.*e/(c2*c2));
  }
//+------------------------------------------------------------------+
double DInvsigma0(double c)// вход [0;1] производные обратной сигмы
  {
   return(1./(c-c*c));
  }
//+------------------------------------------------------------------+
double DInvsigma1(double c)// вход [-1;1]
  {
   return(-2./(c*c-1.));
  }
//+------------------------------------------------------------------+

mas o segundo precisa de um cheque, caso contrário você pode se deparar com #IND

ZZY Eu não verifiquei, tudo deve ser verificado para não encontrar #IND

ZZZY desculpe esquecer a praça, corrigido.

 
Urain:
Todas as 4 funções devem ser definidas para todas as X
 
Urain:

Este é o inverso da função sigmóide acima.

mas o segundo precisa de um cheque, ou você pode receber #IND


Insira algo como isto na função:

if(x>0.9999999)
x=1.0;
if(x<-0.9999999)
x=-1.0;
 
Joo:

Ponha algo assim na função:

É possível chamar ativadores lineares, não há necessidade de confundir fórmulas confusas como elas são.

ZS 39 página, últimas duas funções linha0() e linha1().

ZZY adicionou outra função na página 39 para verificar Mline() para excesso -#IND #IND

 
Estúpido.
 
TheXpert:


?

 

Porquê? Eu gosto.

Presumo que o nome já não seja um problema?

 
TheXpert:

Porquê? Eu gosto.

Acho que o nome está fora de questão?

))

No processo de desenvolvimento, as coisas vão mudar uma centena de vezes, como sempre.

 

Tudo parece fixe, mas algo está errado, ou desnecessário, ou desaparecido...

E não está claro porquê, uma vez que numa inspecção mais próxima não há nada para compensar.

Tens a tua cabeça no teu avatar?

Ou precisas de dormir. O que eu vou fazer agora. E amanhã vou buscar um lúcio.