O "New Neural" é um projecto de motor de rede neural Open Source para a plataforma MetaTrader 5. - página 5

 
Renat:

Não existem DLLs de "sistema seguro".

Eu não insisto :) não, então não.
 

Proponho fazer uma rede universal com recorrência em vez de loops. O objectivo de construir uma rede é criar um mapa topológico.

O mapa topológico é uma tabela bidimensional onde está escrito qual ponto está ligado a qual. Usando tal diagrama é possível escrever topologias clássicas ou criar a sua própria topologia com a ajuda de um editor gráfico de topologia.

Figura que explica o 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()
  {
//  вызов расчёта нейронов от последнего до  первого
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
 

Ligando-se em listas dentro de um neurônio, neurônios e ligando entradas e saídas evita os problemas de criar algoritmos de aprendizagem (assim como problemas de fluxo de trabalho), a própria rede saberá onde atribuir o quê.

 
Renat:
A propósito, oponho-me veementemente ao seu padrão interno de nomenclatura e codificação.
 
TheXpert:
A propósito, sou fortemente contra o seu padrão interno de nomenclatura e codificação.

não há escolha aqui. Cada um tem seus próprios padrões e princípios estabelecidos (os meus também são diferentes das metaquotas).

Mas o padrão das metaquotas não é o pior disponível. Então, para garantir que ninguém se magoe pela sua perda, teremos de usar um único padrão. Nesta situação, será a partir das meta-cotações.

 
Sergeev: Nesta situação seria a partir das meta-cotações.
Eu posso postar o meu ;)?
 
Urain:

Proponho fazer uma rede universal com recorrência em vez de loops. O objectivo de construir uma rede é criar um mapa topológico.

O mapa topológico é uma tabela bidimensional onde está escrito qual ponto está ligado a qual. Usando tal diagrama será possível escrever as topologias clássicas ou criar a sua própria topologia usando um editor gráfico de topologia.

Uma matriz bidimensional será suficiente para uma variedade de topologias e compreensão visual?

 
Sergeev:

Uma matriz bidimensional seria suficiente para uma variedade de topologias e compreensão visual?

Não.
 
Sergeev:

Uma matriz bidimensional será suficiente para uma variedade de topologias e compreensão visual?


Para encriptação de topologia sim, para compreensão visual apenas para especialistas, ainda melhor um kernel gráfico que, a partir da percepção visual, fará um mapa correctamente.

Essencialmente, o mapa é um conjunto unidimensional de estruturas que consiste em duas células "de onde" e "para onde", mais o cabeçalho do mapa deve conter informações sobre quantos neurônios, que tipo cada neurônio tem, quantos pesos cada neurônio tem, qual a posição do operador de atraso.

Assim, para uma compreensão visual completa bidimensional não é suficiente, é melhor ter uma matriz bidimensional de estruturas, para que você possa anotar o tipo, número de pesos, grau de atraso do operador e conexão de cada entrada, e links de células de atraso.

Em geral, "e links de células de atraso" é desnecessário, eles são conectados a inputs para que links de inputs armazenem informações sobre links com atrasos também.

 
Quem me pode aconselhar sobre uma ferramenta de desenho online para diagramas e essas merdas?