//Constructor de capa public RedNeuronalCapa(int nNodosPadre, int nNodos, int nNodosHijo) { numeroDeNodos = nNodos; numeroDeNodosPadre = nNodosPadre; numeroDeNodosHijo = nNodosHijo; capaPadre = null; capaHija = null; }
public RedNeuronal(int nNodosInput, int nNodosOcultos, int nNodosOutput) { capaEntrada = new RedNeuronalCapa(0, nNodosInput, nNodosOcultos); capaOculta = new RedNeuronalCapa(nNodosInput, nNodosOcultos, nNodosOutput); capaSalida = new RedNeuronalCapa(nNodosOcultos, nNodosOutput, 0); capaEntrada.Inicializar(nNodosInput, null, capaOculta); capaOculta.Inicializar(nNodosOcultos, capaEntrada, capaSalida); capaSalida.Inicializar(nNodosOutput, capaOculta, null); capaEntrada.AsignarPesosAleatorios(); capaOculta.AsignarPesosAleatorios(); }
//Dependiendo de los valores recibidos, te ordena las capa public void Inicializar(int nNodos, RedNeuronalCapa padre, RedNeuronalCapa hija) { numeroDeNodos = nNodos; valoresNeuronas = new float[nNodos]; valoresDeseados = new float[nNodos]; errores = new float[nNodos]; if (padre != null) { capaPadre = padre; numeroDeNodosPadre = padre.numeroDeNodos; } else { capaPadre = null; numeroDeNodosPadre = 0; } if (hija != null) { capaHija = hija; numeroDeNodosHijo = hija.numeroDeNodos; pesos = new float[numeroDeNodos, numeroDeNodosHijo]; pesosIncremento = new float[numeroDeNodos, numeroDeNodosHijo]; biasValores = new float[numeroDeNodosHijo]; biasPesos = new float[numeroDeNodosHijo]; } else { capaHija = null; numeroDeNodosHijo = 0; pesos = null; pesosIncremento = null; biasValores = null; biasPesos = null; } for (int i = 0; i < numeroDeNodos; i++) { valoresNeuronas[i] = 0; valoresDeseados[i] = 0; errores[i] = 0; } if (hija != null) { for (int i = 0; i < numeroDeNodos; i++) { for (int j = 0; j < numeroDeNodosHijo; j++) { pesos[i, j] = 0; pesosIncremento[i, j] = 0; } } for (int j = 0; j < numeroDeNodosHijo; j++) { biasValores[j] = -1; biasPesos[j] = 0; } } }