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

 
À quel stade se trouve le projet actuellement ? Qui est le superviseur ?
 
Mieux:
À quel stade se trouve le projet actuellement ? Qui est le patron ?

Pas de patron, vous voulez être vous-même.

ZS : Je pense que demain midi serait un meilleur moment pour parler.

 
Mieux:
À quel stade se trouve le projet actuellement ? Qui est le patron ?
Le parieur n'est-il pas celui qui a gagné le championnat l'autre jour ?
 
shyma:
Le parieur n'est-il pas le même que le neurone du hibou qui a gagné le championnat une fois ?
Celui-là. Il avait un compte PAMM quelque part... Cherchez sur Google.
 
R0MAN:
Celui-là. Il avait un compte PAMM quelque part... Cherchez sur Google.
Par son profil :-)
 
aharata:
Par le biais du profil :-)
C'est la première chose que j'ai regardée - je ne l'ai pas trouvée... à la volée... :-) Je n'étais pas encore réveillé... :-)
 

Je me suis dit que j'allais ressortir un vieux sujet.

Je propose un modèle NS universel à prendre en considération.

Les opposants sont invités à soumettre un type de grille qu'il n'est pas possible de décrire avec ce modèle ! !!

Le code est approximatif, il faut donc aller au fond des choses.

L'implémentation proposée est facilement transformable pour le CPU et le GPU. Des opérateurs de retardement sont également prévus dans le réseau.

il y a 3 façons de se transformer :

laisser tel quel (les 4 tableaux sont en 2D), adapté au GPU

out est un tableau à une dimension, mais utilise également un masque bool à deux dimensions.

out est un tableau unidimensionnel et un tableau d'index construit à partir du masque est utilisé à la place du masque.

(nous avons parlé plus haut des masques binaires ; c'est un tel masque qui utilise les zéros et les uns pour montrer s'il y a une connexion ou non, dans ce cas un neurone est un tableau horizontal et ses connexions avec les autres sont indiquées dans son horizon par les valeurs correspondantes d'un masque binaire, dans les mêmes cellules mais dans des tableaux parallèles sont stockés les poids, les sorties, et les données temporelles, Zx sont des opérateurs de retard de gamme x)

Modèle Net

class CDmem
  {
public:
                     CDmem(void){};
                    ~CDmem(void){};
   double            m[];
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CBmem
  {
public:
                     CBmem(void){};
                    ~CBmem(void){};
   bool              m[];
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CProcessing
  {
public:
                     CProcessing(void){};
                    ~CProcessing(void){};
   virtual void      Processing(int i,CBmem &mask[],CDmem &weg[],CDmem &out[],CDmem &temp[],int I,int J)
     {
      for(int j=0;j<J;j++)
        {
         temp[i].m[j]=mask[i].m[j]*weg[i].m[j]*out[i].m[j];
        }
      double sum=0;
      for(int j=0;j<J;j++)
        {
         sum+=temp[i].m[j];
        }

      double outt=2./(1.+exp(-sum));
      for(int j=0;j<J;j++)
         out[i].m[j]=outt;
     };
   void              DelayOperator(int i,CDmem &out[])
     {
      // тут мы сдвишаем от конца к началу, реализуем оператор задержки
     };
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class Unet
  {
   int               cnt_prcss;
   CBmem             mask[];
   CDmem             weg[];
   CDmem             out[];
   CDmem             temp[];
   CProcessing      *prcss[];
   void              Init()
     {
      ArrayResize(mask,5);
      ArrayResize(weg,5);
      ArrayResize(out,5);
      ArrayResize(temp,5);
      for(int i=0;i<5;i++)
        {
         ArrayResize(mask[i].m,19);
         ArrayResize(weg[i].m,19);
         ArrayResize(out[i].m,19);
         ArrayResize(temp[i].m,19);
        }
     };
   void              InitProcessing(CProcessing *p)
     {
      prcss[cnt_prcss]=p;
      cnt_prcss++;
     };
public:
                     Unet(void){Init(); cnt_prcss=0;};
                    ~Unet(void)
     {
      for(int i=0;i<cnt_prcss;i++)
         delete prcss[i];
     };
   void              DonwloadMask(){};
   void              DonwloadWeg(){};
   void              Processing()
     {
      for(int i=0;i<cnt_prcss;i++)
         prcss[i].Processing(i,mask,weg,out,temp,5,19);
     };
   void              DelayOperator()
     {
      for(int i=0;i<cnt_prcss;i++)
         prcss[i].DelayOperator(i,out);
     };
  };
 

Ce n'est pas un modèle. Où sont les neurones ? Où sont les connexions ? Où en est le processus ? Où sont les rétroactions ?

Et une autre question : pourquoi faire un modèle universel pour tous les réseaux ?

Je préfère créer un réseau universel pour la plupart des choses (heh)).

Et pourquoi passez-vous directement à la mise en œuvre ? Vous n'avez pas d'architecture prête en premier lieu.

 
LeXpert:

Ce n'est pas un modèle. Où sont les neurones ? Où sont les connexions ? Où en est le processus ? Où sont les rétroactions ?

Et une autre question : pourquoi faire un modèle universel pour tous les réseaux ?

Mieux vaut un réseau universel pour la plupart des tâches (heh) )

Les neurones sont des réseaux horizontaux dans la figure. Les connexions sont codées avec un masque booléen.

Posez des questions suggestives, je vous expliquerai ce qui n'est pas clair, je ne peux pas tout décrire en même temps.

L'architecture découle du modèle et le restera.

Mieux qu'un réseau universel pour la plupart des tâches (heh) )

ZZZY et moi voulons vérifier si le modèle convient à toutes les tâches ou non. Une tête, c'est bien, mais un chœur, c'est mieux.

En modifiant les descendants de la classe CProcessing, vous pouvez changer les types de neurones un par un.

Vous pouvez en outre ajouter un tableau de types de neurones et attribuer à chacun un type différent (en sélectionnant le descendant CProcessing).

ZZZZY Les liens inverses sont étiquetés Zx dans la figure.

 
Urain:

Alors pourquoi le masque est-il attaché à la sortie et pas à nouveau aux neurones) ?

Et comment voulez-vous mettre la fonction d'activation dans le GPU ?

Imho, vous allez bachoter ce que vous ne pouvez pas bachoter, comme la dernière fois. Mais c'est un "imho", donc vous pouvez juste le mettre sur la ligne.

Je ne vous dérangerai plus, sauf si c'est pour le travail.

Ah, le cogitron. Quoi d'autre -- le réseau Hopfield -- où l'entrée est la sortie. Ensuite, il y a le peu de...