Discusión sobre el artículo "Redes neuronales: así de sencillo" - página 8

 

Hola Dmitriy,

He estado trabajando en las dos primeras partes de su "Redes neuronales" de la serie desde hace unas semanas, y sigo comming accros el código siguiente a continuación, cuando el ciclo a través de las neuronas (o de otras cosas).

Realmente no lo entiendo - desde mi punto de vista esto siempre dejaría fuera el último elemento. Las funciones Total() deben devolver un recuento, a continuación, eliminar uno Y el uso de "<" en el bucle for. Así que para una cuenta Total() de 2, sólo se ejecutaría el bucle for una vez.

¿Qué me he perdido?

Saludos,

Delf


   int total=Layer.Total()-1;
   for(int n=0; n<total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
 

en algun trozo de codigo has escrito algo como:

int total=Layer.Total()-1;
   for(int n=0; n<total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
  }

pero supongamos que tenemos 20 neuronas en la capa, y asignamos la variable total con 19 [int total=Layer.Total()-1] entonces ahora el total es igual a 19 , cuando iteramos sobre las neuronas desde el índice 0-18 (total=19) nunca alcanzamos el índice 19 (última neurona), creo que debemos cambiar el código con:

int total=Layer.Total();
   for(int n=0; n<=total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
  }

o

int total=Layer.Total()-1;
   for(int n=0; n<= total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
  }

para llegar a la última neurona de la capa.

¿cual es tu idea?

 
Hedayat Yazdani:

en algún trozo de código has escrito algo como:

pero supongamos que tenemos 20 neuronas en la capa, y asignamos la variable total con 19 [int total=Capa.Total()-1] entonces ahora el total es igual a 19 , cuando iteramos sobre las neuronas desde el índice 0-18 (total=19) nunca llegamos al índice 19 (última neurona), creo que debemos cambiar el código con:

o

para llegar a la última neurona de la capa.

¿cuál es tu idea?

En cada capa añadimos una neurona más para el desplazamiento bayesiano. Así que al llamar a la función para crear una capa con 20 neuronas creamos 21 neuronas. Y Layer.Total() devolverá 21. Pero los datos de entrada tendrá sólo 20 elementos. La ultima neurona bayesiana siempre tiene '1' en la salida. Así que uso Layer.Total()-1. En el bucle utilizo "<" porque el primer elemento de la matriz tiene índice '0'.

 
Buenas noches, me gustaría saber si se puede crear Asesor Experto, Indicador o Script?
 
MetaQuotes:

Se ha publicado el nuevo artículo Neural Networks Made Easy:

Escrito por Dmitriy Gizlyk

Hola, primera vez aprendiendo red neuronal, su artículo es muy adecuado para mí, pero quiero saber por qué -1 es necesario en muchos lugares, tales como: nextLayer.Total () - 1, para que no coincida con el número de neuronas en la capa siguiente .

 
Ping You Jiang #:

Hola, primera vez aprendiendo red neuronal, su artículo es muy adecuado para mí, pero quiero saber por qué se necesita -1 en muchos lugares, tales como: nextLayer. () - 1, para que no coincida con el número de neuronas en la siguiente capa .

Hola, es normal trabajar con array. En mql5 todos los índices del array empiezan por 0. Y nextLayer .Total() devuelve el número total de neuronas. Así que si vuelve a 10 significa que los elementos del array tienen indices de 0 a 9.

 

De hecho, obtengo un error de compilación cuando descargo el archivo.

NeuroNet.mqh

 
Muhammad Saleem #: De hecho, obtengo un error de compilación cuando descargo el archivo.

Intente utilizar la función GetPointer.

 
Dmitriy Gizlyk #: Intente utilizar la función GetPointer.

Hola Dmitriy, Gracias por este artículo. Por favor, para este error, ¿cómo se puede arreglar? ¿podría proporcionar el código corregido?

 
Muhammad Saleem #: De hecho me sale un error de compilación al descargar el archivo.

Hola Muhammad, ¿conseguiste solucionar este error?