python - neuronales - ¿Cómo entrenar una red neuronal para el conjunto de datos supervisados utilizando la optimización de caja negra de pybrain?
redes neuronales convolucionales python (1)
¡¡Finalmente lo resolví !! Siempre es fácil una vez que sabes cómo!
Esencialmente, el primer argumento para la AG es la función de adecuación (llamada evaluador en documentos) que debe tomar el segundo argumento (un individuo, llamado evaluable en documentos) como su único argumento.
En este ejemplo entrenaremos a XOR.
from pybrain.datasets.classification import ClassificationDataSet
# below line can be replaced with the algorithm of choice e.g.
# from pybrain.optimization.hillclimber import HillClimber
from pybrain.optimization.populationbased.ga import GA
from pybrain.tools.shortcuts import buildNetwork
# create XOR dataset
d = ClassificationDataSet(2)
d.addSample([0., 0.], [0.])
d.addSample([0., 1.], [1.])
d.addSample([1., 0.], [1.])
d.addSample([1., 1.], [0.])
d.setField(''class'', [ [0.],[1.],[1.],[0.]])
nn = buildNetwork(2, 3, 1)
# d.evaluateModuleMSE takes nn as its first and only argument
ga = GA(d.evaluateModuleMSE, nn, minimize=True)
for i in range(100):
nn = ga.learn(0)[0]
Resultados de la prueba después de la secuencia de comandos anterior:
In [68]: nn.activate([0,0])
Out[68]: array([-0.07944574])
In [69]: nn.activate([1,0])
Out[69]: array([ 0.97635635])
In [70]: nn.activate([0,1])
Out[70]: array([ 1.0216745])
In [71]: nn.activate([1,1])
Out[71]: array([ 0.03604205])
He jugado un poco con pybrain y entiendo cómo generar redes neuronales con arquitecturas personalizadas y entrenarlas para establecer conjuntos de datos supervisados usando un algoritmo de propagación hacia atrás.
Sin embargo, me confunden los algoritmos de optimización y los conceptos de tareas, agentes de aprendizaje y entornos.
Por ejemplo: ¿Cómo implementaría una red neuronal como (1) para clasificar el conjunto de datos XOR usando el algoritmo genético pybrain (2)?
(1) pybrain.tools.shortcuts.buildNetwork(2, 3, 1)
(2) pybrain.optimization.GA()