"New Neural" est un projet de moteur de réseau neuronal Open Source pour la plateforme MetaTrader 5. - page 40

 

Ce sont des fonctions pour les coefficients de l'angle d'attaque sigmoïde :

//+------------------------------------------------------------------+
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 Je vais vous expliquer pour quoi cela a été écrit :

tâche : nous devons réguler l'angle d'attaque sigmoïde par les sorties des neurones eux-mêmes, sorties comprises entre [0;1] ou [-1;1].

Considérons la variante avec [0;1]. Dans la section de 0 à 0,5 nous devons diminuer l'angle d'attaque, ce qui entraîne une diminution de la température de sortie, dans la section de 0,5 à 1, au contraire, l'angle doit augmenter, mais l'essentiel est la douceur et sans transitions.

Il faut une hyperbole avec une inflexion à un point médian donné. Vous pouvez utiliser une seule sortie pour contrôler l'angle d'attaque, ou traiter plusieurs sorties comme une moyenne arithmétique, sinon vous vous bloquerez dans la direction de l'angle d'attaque émettant la fonction de seuil.

HZZ Si les entrées données sont utilisées, alors line0() et line1() ne sont pas nécessaires, mais ytrans1() doit être décalé vers la plage d'entrée [0;1].

 
LeXpert:

Au fait.

Nous avons besoin d'une fonction de type sigmoïde.

Les exigences : une forme normale de la fonction et de sa dérivée (pas trop difficile à calculer) et une forme normale de la fonction inverse et de sa dérivée.

Il s'agit de l'inverse de la fonction sigmoïde ci-dessus.

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

mais le second a besoin d'être vérifié, sinon vous risquez de tomber sur #IND

ZZY je n'ai pas vérifié, tout doit être vérifié pour ne pas tomber sur #IND

ZZZY désolé a oublié le carré, corrigé.

 
Urain:
Les 4 fonctions doivent être définies pour tous les X
 
Urain:

C'est l'inverse de la fonction sigmoïde ci-dessus.

mais le second doit être vérifié, sinon vous risquez d'obtenir #IND


Insérez quelque chose comme ceci dans la fonction :

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

Insérez quelque chose comme ceci dans la fonction :

Il est possible d'appeler des activateurs linéaires, il n'est pas nécessaire d'utiliser des formules confuses comme c'est le cas.

Page ZS 39, deux dernières fonctions line0() et line1().

ZZY a ajouté une autre fonction à la page 39 pour vérifier l'excès de Mline() -#IND #IND

 
Stupide.
 
LeXpert:


?

 

Pourquoi ? J'aime ça.

Je suppose que le nom n'est plus un problème ?

 
LeXpert:

Pourquoi ? J'aime ça.

Je suppose que le nom est hors de question ?

))

Au cours du processus de développement, les choses changeront cent fois, comme toujours.

 

Tout semble cool, mais il y a quelque chose qui ne va pas, ou qui est inutile, ou qui manque...

Et on ne sait pas trop pourquoi, car en y regardant de plus près, il n'y a rien du tout à rattraper.

Vous avez votre tête sur votre avatar ?

Ou tu as besoin de dormir. Ce que je vais faire maintenant. Et demain, je vais chercher un brochet.