"New Neural" es un proyecto de motor de red neuronal de código abierto para la plataforma MetaTrader 5. - página 40

 

Son funciones para los coeficientes del ángulo de ataque sigmoide:

//+------------------------------------------------------------------+
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 Te explicaré para qué se escribió esto:

tarea: necesitamos regular el ángulo de ataque sigmoide mediante las propias salidas de las neuronas, salidas dentro de [0;1] o [-1;1].

Consideremos la variante con [0;1]. En el tramo de 0 a 0,5 hay que disminuir el ángulo de ataque, lo que lleva a una disminución de la temperatura de salida, en el tramo de 0,5 a 1 por el contrario, el ángulo debe aumentar, pero lo principal es la suavidad y sin transiciones.

Se necesita una hipérbola con una inflexión en un punto medio determinado. Puede utilizar una sola salida para controlar el ángulo de ataque, o manejar varias salidas como una media aritmética, de lo contrario se bloqueará en la dirección del ángulo de ataque emitiendo la función de umbral.

ZZY si se utilizan las entradas dadas, entonces no se necesitan line0() y line1() , pero entonces ytrans1() necesita desplazarse al rango de entrada [0;1].

 
TheXpert:

Por cierto.

Necesitamos una función de tipo sigmoide.

Los requisitos -- una forma normal de la función y su derivada (no muy difícil de calcular) y una forma normal de la función inversa y su derivada.

Son la inversa de la función sigmoidea anterior.

//+------------------------------------------------------------------+
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.));
  }
//+------------------------------------------------------------------+

pero el segundo necesita una comprobación, de lo contrario podrías encontrarte con #IND

ZZY no lo he comprobado, hay que comprobarlo todo para no entrar en #IND

ZZZY lo siento se olvidó de la plaza, corregido.

 
Urain:
Las 4 funciones deben estar definidas para todas las X
 
Urain:

Es la inversa de la función sigmoidea anterior.

pero el segundo necesita una comprobación, o podría obtener #IND


Inserta algo como esto en la función:

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

Poner algo así en la función:

Es posible llamar a los activadores lineales, no hay necesidad de confundir fórmulas confusas como es.

Página ZS 39, dos últimas funciones line0() y line1().

ZZY ha añadido otra función en la página 39 para comprobar el exceso de Mline() -#IND #IND

 
Estúpido.
 
TheXpert:


?

 

¿Por qué? Me gusta.

¿Supongo que el nombre ya no es un problema?

 
TheXpert:

¿Por qué? Me gusta.

¿Supongo que el nombre está descartado?

))

En el proceso de desarrollo, las cosas cambiarán cien veces, como siempre.

 

Todo parece genial, pero algo está mal, o es innecesario, o falta...

Y no está claro por qué, ya que si se mira con detenimiento no hay nada en absoluto que compensar.

¿Tienes la cabeza en tu avatar?

O necesitas dormir la mona. Lo que voy a hacer ahora. Y mañana voy a por un lucio.

Razón de la queja: