Array out of range

Para adicionar comentários, por favor Faça o login ou registrar
pedro de
89
pedro de  

Alguem pode por favor me explicar pq quando eu chamo a função InitializeNeuralNetwork no onTick o o codigo de função AddLayer da out of range


quando eu coloco 0 nao da problema, entao o problema é no i, mas eu nao tenho ideia do pq

bool InitializeNeuralNetwork(int nsize,int &y_size_array[]){
   
   ArrayResize(layer,nsize+1);
   
   neural_system_size = nsize;

   for(int i = 0; i<nsize; i++){
   
   AddLayer(y_size_array[i],i);
   
   }
   
   return true;
}



int AddLayer(int l_size,int layer_index){
   
   layer[layer_index].network_size = neural_system_size;

   layer[layer_index].position = layer_index;

   layer[layer_index].CreateLayer(l_size);

return layer_index;

}
Rogerio Figurelli
Moderador
58561
Rogerio Figurelli  
pedro de:

Alguem pode por favor me explicar pq quando eu chamo a função InitializeNeuralNetwork no onTick o o codigo de função AddLayer da out of range


quando eu coloco 0 nao da problema, entao o problema é no i, mas eu nao tenho ideia do pq

Olá  pedro de, você está realmente chamando essas funções em OnTick()?
Se sim, o primeiro passo que recomendo é você testar apenas em OnInit(), defindo bem a inicialização e profundidade de sua rede, deixando para OnTick() apenas o que estiver relacionado a funções de saída, como previsão/generalização/etc.
Sds.,
Rogério Figurelli

pedro de
89
pedro de  
vlw Rogerio, eu digitei errado ali ja estava no oninit, acho (acho pq mudei umas variaveis de lugar sem prestar muita atençao, mas tenho quase ctz q era so esse o problema mesmo [por enquando rsrs] ) q o problema era que o tamanho da rede era diferente do tamanho do array pra definir o tamanho das layers, botei uma checagem pra isso e arrumei
#include "NeuralLayers.mqh"

class NeuralNetwork : NeuralLayers
  {
private:

public:
 
NeuralLayers layer[];

int neural_system_size;

bool InitializeNeuralNetwork(int nsize,int &y_size_array[]){
   
   ArrayResize(layer,nsize);
   
   if (nsize != ArraySize(y_size_array)){Print("ysize array dont has the same size of xsize int");}
   
   neural_system_size = nsize;

   for(int i = 0; i<nsize; i++){
      
   AddLayer(y_size_array[i],i);
   
   }
   
   return true;
}



int AddLayer(int l_size,int layer_index){
   
   layer[layer_index].network_size = neural_system_size;

   layer[layer_index].position = layer_index;

   layer[layer_index].CreateLayer(l_size);
   
   Print("layer   ",layer[layer_index].position,"  size  ",l_size,"  ", layer[layer_index].type);

return layer_index;

}
pedro de
89
pedro de  
pedro de:
vlw Rogerio, eu digitei errado ali ja estava no oninit, acho q o problema era que o tamanho da rede era diferente do tamanho do array pra definir o tamanho das layers, botei uma checagem pra isso e arrumei
int OnInit()
  {
//---

int size = 6;

int ysize[] = {10,7,5,3,5,4};

network.InitializeNeuralNetwork(size,ysize);
   
//---
   return(INIT_SUCCEEDED);
  }

esse é oninit onde realmete estava o erro eu acabei n mandando aqui, vou arrumar isso e tornar o size dependente do tamanho do ysize logo pra nao ter mais esse problema, obrigado por responder

Para adicionar comentários, por favor Faça o login ou registrar