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

 
Renat:

No hay DLL de "sistema seguro".

No insisto :) no así no.
 

Propongo hacer una red universal con recursión en lugar de bucles. El objetivo de construir una red es crear un mapa topológico.

El mapa topológico es una tabla bidimensional en la que se detalla qué punto está conectado a cuál. Con este diagrama se pueden escribir topologías clásicas o crear las propias con la ayuda de un editor de topología gráfica.

Figura explicativa del código p.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()
  {
//  вызов расчёта нейронов от последнего до  первого
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
 

La vinculación en listas dentro de una neurona, las neuronas y la vinculación de entradas y salidas evita los problemas de creación de algoritmos de aprendizaje (así como los problemas de flujo de trabajo), la propia red sabrá dónde asignar qué.

 
Renat:
Por cierto, me opongo firmemente a su norma interna de denominación y codificación.
 
TheXpert:
Por cierto, estoy fuertemente en contra de su norma interna de nomenclatura y codificación.

aquí no hay elección. Cada uno tiene sus propias normas y principios establecidos (los míos también son diferentes a los de las metacitas).

Pero la norma de las metacitas no es la peor disponible. Así que para asegurarnos de que nadie salga perjudicado por su pérdida, tendremos que utilizar una única norma. En esta situación será a partir de las metacomillas.

 
sergeev: En esta situación sería a partir de las metacitas.
Puedo publicar el mío ;)?
 
Urain:

Propongo hacer una red universal con recursión en lugar de bucles. El objetivo de construir una red es crear un mapa topológico.

El mapa topológico es una tabla bidimensional en la que se detalla qué punto está conectado a cuál. Con un diagrama de este tipo será posible escribir las topologías clásicas o crear las propias mediante un editor gráfico de topologías.

¿Será suficiente una matriz bidimensional para una variedad de topologías y comprensión visual?

 
sargazo:

¿Sería suficiente una matriz bidimensional para una variedad de topologías y comprensión visual?

no.
 
sargazo:

¿Será suficiente una matriz bidimensional para una variedad de topologías y comprensión visual?


Para la codificación de la topología sí, para la comprensión visual sólo para los especialistas, todavía mejor un núcleo gráfico que a partir de la percepción visual haga correctamente un mapa.

Esencialmente, el mapa es una matriz unidimensional de estructuras que consisten en dos celdas "de dónde" y "a dónde", además la cabecera del mapa debe contener información sobre cuántas neuronas, qué tipo tiene cada neurona, cuántos pesos tiene cada neurona, qué rango de operador de retardo.

Así que para una completa comprensión visual no es suficiente con dos dimensiones, mejor tener una matriz bidimensional de estructuras, para que pueda escribir el tipo, el número de pesos, el rango de retardo del operador y la conexión de cada entrada, y los enlaces de las celdas de retardo.

En general, "y los enlaces de las celdas de retardo" son innecesarios, están conectados a las entradas para que los enlaces de las entradas almacenen información sobre los enlaces con retardo también.

 
¿Quién puede aconsejarme sobre una herramienta de dibujo en línea para diagramas y mierdas?