简体   繁体   English

PyBrain - 如何做深度信念网络培训?

[英]PyBrain - how to do Deep belief network training?

I have some difficulty training a DBN using Pybrain. 使用Pybrain训练DBN有些困难。 First I tried to do it the simple way: 首先,我尝试以简单的方式做到这一点:

net = buildNetwork(*layerDims)

I faced this problem: How to do supervised deepbelief training in PyBrain? 我遇到了这个问题: 如何在PyBrain中进行有监督的深度信仰训练? , and the suggested solution just led to another 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

So I tried to define a network from scratch! 所以我试图从头开始定义一个网络!

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

still when I run: 我还在跑的时候:

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

I see this 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'

which has something to do with the hidden layer in the related RBM. 这与相关RBM中的隐藏层有关。

Am I missing something here? 我在这里错过了什么吗?

You initialize a network under the name net : 您以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()

But you pass as argument net1 : 但是你作为参数net1传递:

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

This causes an error for sure. 这肯定会导致错误。

So 所以

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

should solve your problem. 应该解决你的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM