Repetid conmigo, monitos

Buscando información referente a redes neuronales artificiales me ha sorprendido la cantidad de errores que cometen los autores.

Perlas como la siguiente:

neurona::neurona(int NumEnt, float Umbral)
{
 int n;

 xj = 0;
 sj = 0;
 h = Umbral;
 nro = NumEnt;
 wij = (float *) malloc(sizeof(float) * nro);
 for(n = 0; n < nro; n++) wij[n] = 0;
 wij[0] = 0;
 wij[1] = 0;
}
 
La variable wif, que contiene claramente lo que su nombre indica, es un puntero a un trozo de memoria cuyo tamaño es un parámetro de la función.

Este tamaño (NumEnt, que era muy costoso poner NumeroEntradas) no tiene ninguna restricción en sus valores, pero sorprendentemente el autor se permite la libertat de acceder al elemento en la posición 0 y 1 con total alegría.

 
Perlita número 2: 
Si la salida es 1 cuando debería ser 0, entonces los pesos y el umbral 
se modifican de la siguiente manera: en primer lugar se incrementa el 
umbral en una unidad, para hacer menos probable la activación de la 
neurona. Si la entrada ii es 0, entonces no se hace ningún cambio en su 
peso, puesto que esta entrada no ha contribuido a activar la neurona. 
Por el contrario, si la entrada ii es 1, se decrementa su peso wi en una
 unidad. En el otro caso en el que la salida es 1 cuando debiera ser un 
0, los cambios que deben hacerse son los opuestos.
 
¿En qué quedamos? A ver si ponemos un poquitín más de cuidado en las explicaciones que se supone deben ayudarnos a aclarar el tema.

Sólo se me ocurre que estas cosas puedan suceder cuando alguien copia lo que no entiende.

No hay comentarios :

Publicar un comentario