"New Neural" is an Open Source neural network engine project for the MetaTrader 5 platform. - page 5

 
Renat:

There are no "safe system" DLLs.

I do not insist :) no so no.
 

I propose to make a universal network with recursion instead of loops. The whole point of constructing a network is to create a topology map.

Topology map is a two-dimensional table where it is spelled out which point is connected to which one. Using such a scheme you can write the classical topologies or create your own using a graphical topology editor.

The picture explaining the code 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()
  {
//  вызов расчёта нейронов от последнего до  первого
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
 

Linking into lists within a neuron, neurons and linking inputs and outputs allows to avoid problems of creating learning algorithms (as well as problems of workflow), the network itself will know where to assign what.

 
Renat:
By the way, I strongly oppose your internal naming and coding standard.
 
TheXpert:
By the way, I strongly oppose your internal naming and coding standard.

there is no choice here. Everyone has their own standards and established principles (mine are different from the meta-quotes, too).

But the metaquotes standard is not the worst available. So that no one would be offended by your loss, we will have to use a single standard. In this situation it will be from the meta-quotes.

 
sergeev: In this situation, it will be from the meta-quotes.
I can post mine ;)?
 
Urain:

I propose to make a universal network with recursion instead of loops. The whole point of constructing a network is to create a topology map.

Topology map is a two-dimensional table where it is spelled out which point is connected to which one. Using such a scheme will be possible to prescribe the classical topologies or to create your own with a graphical topology editor.

Will a two-dimensional array be enough for a variety of topologies and visual understanding?

 
sergeev:

Would a two-dimensional array be enough for a variety of topologies and visual understanding?

no.
 
sergeev:

Two-dimensional array will be enough for a variety of topologies and visual understanding?


For encryption of topology yes, for visual understanding only for specialists, still better a graphical kernel which will be from the visual perception to properly make a map.

Essentially, the map is a one-dimensional array of structures, which consist of two cells "where from" and "where to", plus the map header should contain information about how many neurons, what type each neuron has, how many weights which neuron has, what is the rank of the delay operator.

So for full visual understanding two-dimensional is not enough, better to have a two-dimensional array of structures, so that you can write down the type, number of weights, delay operator rank and connection of each input, and links from delay cells.

ZY actually "and links from delay cells" is unnecessary, they are connected to inputs so that links of inputs store information about links with delays as well.

 
Who can advise me on some online drawing software for diagrams and shit?
Reason: