2014-07-10 46 views
18

Pybrain kullanarak bir DBN eğitimi almakta zorluk çekiyorum.PyBrain - Derin inanç ağ eğitimi nasıl yapılır?

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 

Yani bir şebekeyi tanımlamak çalıştı:

net = buildNetwork(*layerDims) 

ben bu sorunla karşı karşıya: İlk ben o basit bir yol yapmaya çalıştım How to do supervised deepbelief training in PyBrain?, ve önerilen çözüm sadece başka hataya neden çizik!

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() 

hala çalıştırdığınızda:

trainer = deepbelief.DeepBeliefTrainer(net1, dataset=ds) 
trainer.trainEpochs(epochs) 

şu hatayı görüyorum:

ilgili RBM gizli katmana ile ilgili bir şey vardır
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' 

.

Burada bir şey mi özlüyorum?

+1

Bir çıkış modülü oluşturmanız gerekir. Yani addModule (çıkış) addOutputModule (çıkış) olmalıdır. – jay

+3

Pybrain oldukça yavaş bir kütüphanedir. 25x daha hızlı veya daha fazla olan caffe veya c kütüphaneleri gibi diğer kütüphanelere geçtim. – pbu

+1

Bu eski kütüphane yerine, [Theano] (http://deeplearning.net/software/theano/) tabanlı bir kitaplıktan [Bloklar] (https://github.com/mila-udem/ blok). –

cevap

1

, adlarından net altında bir ağ başlatmak:

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() 

Ama argüman net1 olarak geçmektedir: Bu kesin bir hataya neden

trainer = deepbelief.DeepBeliefTrainer(net1, dataset=ds) 
trainer.trainEpochs(epochs) 

.

Yani

trainer = deepbelief.DeepBeliefTrainer(net, dataset=ds) 

sorunu çözmek gerekir.