python - PyBrain-¿Cómo hacer entrenamiento de la red Deep Creence?
deep-learning dbn (1)
Inicializa una red bajo el nombre de net
:
net = Network()
net.addInputModule(inp)
net.addModule(hidden0)
net.addModule(hidden1)
net.addModule(output)
net.addModule(bias)
net.addConnection(FullConnection(inp, hidden0))
net.addConnection(FullConnection(hidden0, hidden1))
net.addConnection(FullConnection(hidden1, output))
net.addConnection(FullConnection(bias, hidden0))
net.addConnection(FullConnection(bias, hidden1))
net.addConnection(FullConnection(bias, output))
net.sortModules()
Pero pasas como argumento net1
:
trainer = deepbelief.DeepBeliefTrainer(net1, dataset=ds)
trainer.trainEpochs(epochs)
Esto causa un error seguro.
Asi que
trainer = deepbelief.DeepBeliefTrainer(net, dataset=ds)
debe resolver su problema
Tengo algunas dificultades para entrenar un DBN usando Pybrain. Primero intenté hacerlo de manera simple:
net = buildNetwork(*layerDims)
Me enfrenté a este problema: ¿Cómo hacer un entrenamiento supervisado de creencia profunda en PyBrain? , y la solución sugerida acaba de conducir a otro error:
File "/home/WORK/Canopy_64bit/User/lib/python2.7/site-packages/PyBrain-0.3.1- py2.7.egg/pybrain/unsupervised/trainers/deepbelief.py", line 62, in <genexpr>
layercons = (self.net.connections[i][0] for i in layers)
IndexError: list index out of range
¡Así que intenté definir una red desde cero!
inp = LinearLayer(3 , ''visible'')
hidden0 = SigmoidLayer(2 , ''hidden0'')
hidden1= SigmoidLayer(2 , ''hidden1'')
output = LinearLayer(2 , ''output'')
bias = BiasUnit(''bias'')
net = Network()
net.addInputModule(inp)
net.addModule(hidden0)
net.addModule(hidden1)
net.addModule(output)
net.addModule(bias)
net.addConnection(FullConnection(inp, hidden0))
net.addConnection(FullConnection(hidden0, hidden1))
net.addConnection(FullConnection(hidden1, output))
net.addConnection(FullConnection(bias, hidden0))
net.addConnection(FullConnection(bias, hidden1))
net.addConnection(FullConnection(bias, output))
net.sortModules()
aún cuando corro:
trainer = deepbelief.DeepBeliefTrainer(net1, dataset=ds)
trainer.trainEpochs(epochs)
Veo este error:
File "/home/WORK/Canopy_64bit/User/lib/python2.7/site-packages/PyBrain-0.3.1-py2.7.egg/pybrain/structure/connections/connection.py", line 37, in __init__
self.outSliceTo = outmod.indim
AttributeError: ''NoneType'' object has no attribute ''indim''
que tiene algo que ver con la capa oculta en la RBM relacionada.
¿Me estoy perdiendo de algo?