"New Neural" ist ein Open-Source-Projekt für neuronale Netzwerke für die MetaTrader 5-Plattform. - Seite 5

 
Renat:

Es gibt keine "safe system" DLLs.

Ich bestehe nicht darauf :) nein, also nein.
 

Ich schlage vor, ein universelles Netz mit Rekursion anstelle von Schleifen zu erstellen. Der Sinn des Aufbaus eines Netzes besteht darin, eine Topologiekarte zu erstellen.

Die Topologiekarte ist eine zweidimensionale Tabelle, in der angegeben ist, welcher Punkt mit welchem Punkt verbunden ist. Mit Hilfe eines solchen Diagramms kann man klassische Topologien schreiben oder mit Hilfe eines grafischen Topologie-Editors eigene erstellen.

Abbildung zur Erläuterung des Codes S.12

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class Mem
  {
   double            m;
public:
                     Mem(void){};
                    ~Mem(void){};
   void              set(double m_){m=m_;};
   double            get(){return(m);};
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class ObjMem
  {
public:
   ObjMem           *prev;// предыдущий
   Mem              *obj; // объект памяти
   ObjMem           *next;// последующий
   ObjMem           *side;// боковой
                     ObjMem(void){obj=new Mem();};
                    ~ObjMem(void){delete obj;};
   void              ListPrev(ObjMem *obj){prev=obj;};
   void              ListNext(ObjMem *obj){next=obj;};
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class NeuroBase
  {
public:
   ObjMem           *in[];// входы
   ObjMem           *wg[];// веса
   ObjMem           *zo[];// задержка
   Mem              *ou;  // выход
                     NeuroBase(void){ou=new Mem();};
                    ~NeuroBase(void){delete ou;};
   void              ExportMem_In(Mem *ex,int i){in[i].obj=ex;};
   void              ExportMem_Wg(Mem *ex,int i){wg[i].obj=ex;};
   void              ExportMem_Zo(Mem *ex){zo[0].obj=ex;};
   Mem              *ImportMem_In(int i){return(in[i].obj);};
   Mem              *ImportMem_Wg(int i){return(wg[i].obj);};
   Mem              *ImportMem_Zo(int i){return(zo[i].obj);};
   virtual void      work(){/* вызов суммирования перемноженных пар*/};
   virtual void      training(){/* вызов расчёта ошибки*/};
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class Net
  {
   NeuroBase        *n[];
public:
                     Net(void){};
                    ~Net(void){};
   void              direct();  // прямой ход
   void              revers();  // обратный ход
   void              topology();// создание топологии
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Net::topology()
  {
/*    создаём массив нейронов
      связываем массив в список
      создаём связные списки нейновесов и боковые пары
      создаём связывание входов и выходов
      создаём связывание входов и операторов задержки (если нужно)
      связывем веса нейронов с внешним массивом
      связываем выходы последнего слоя с внешним массивом
      связываем входы первогого слоя с внешним массивом      
   */
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Net::direct()
  {
//  вызов расчёта нейронов от первого до последнего
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Net::revers()
  {
//  вызов расчёта нейронов от последнего до  первого
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
 

Die Verknüpfung in Listen innerhalb eines Neurons, Neuronen und die Verknüpfung von Eingängen und Ausgängen vermeidet die Probleme bei der Erstellung von Lernalgorithmen (sowie Workflow-Probleme), das Netz selbst wird wissen, wo was zuzuordnen ist.

 
Renat:
Im Übrigen lehne ich Ihren internen Benennungs- und Kodierungsstandard entschieden ab.
 
TheXpert:
Übrigens bin ich strikt gegen Ihren internen Benennungs- und Kodierungsstandard.

hier gibt es keine Wahl. Jeder hat seine eigenen Standards und Grundsätze (auch meine unterscheiden sich von den Meta-Zitaten).

Aber der Metaquotes-Standard ist nicht der schlechteste, den es gibt. Um also sicherzustellen, dass niemand für seinen Verlust bestraft wird, müssen wir einen einzigen Standard verwenden. In diesem Fall sind es die Meta-Anführungszeichen.

 
sergeev: In diesem Fall wäre es aus den Meta-Zitaten.
Ich kann meine posten ;)?
 
Urain:

Ich schlage vor, ein universelles Netz mit Rekursion anstelle von Schleifen zu erstellen. Der Sinn des Aufbaus eines Netzes besteht darin, eine Topologiekarte zu erstellen.

Die Topologiekarte ist eine zweidimensionale Tabelle, in der angegeben ist, welcher Punkt mit welchem Punkt verbunden ist. Mit Hilfe eines solchen Diagramms ist es möglich, die klassischen Topologien zu schreiben oder mit Hilfe eines grafischen Topologie-Editors eigene zu erstellen.

Reicht eine zweidimensionale Anordnung für eine Vielzahl von Topologien und ein visuelles Verständnis aus?

 
sergeev:

Wäre eine zweidimensionale Anordnung ausreichend für eine Vielzahl von Topologien und ein visuelles Verständnis?

Nein.
 
sergeev:

Reicht eine zweidimensionale Anordnung für eine Vielzahl von Topologien und ein visuelles Verständnis aus?


Für die Verschlüsselung der Topologie ja, für das visuelle Verständnis nur für Spezialisten, noch besser ein grafischer Kern, der aus der visuellen Wahrnehmung korrekt eine Karte macht.

Im Wesentlichen ist die Karte eine eindimensionale Anordnung von Strukturen, die aus zwei Zellen "woher" und "wohin" bestehen, und der Kartenkopf sollte Informationen darüber enthalten, wie viele Neuronen, welchen Typ jedes Neuron hat, wie viele Gewichte jedes Neuron hat und welchen Rang der Verzögerungsoperator hat.

Um ein vollständiges visuelles Verständnis zu erreichen, reicht ein zweidimensionales Array von Strukturen nicht aus, so dass Sie den Typ, die Anzahl der Gewichte, den Verzögerungsrang des Operators und die Verbindung jedes Eingangs sowie die Verbindungen zwischen den Verzögerungszellen aufschreiben können.

Im Allgemeinen ist "und Verbindungen von Verzögerungszellen" unnötig, sie sind mit Eingängen verbunden, so dass Verbindungen von Eingängen auch Informationen über Verbindungen mit Verzögerungen speichern.

 
Wer kann mir ein Online-Zeichentool für Diagramme und so weiter empfehlen?
Grund der Beschwerde: