【问题标题】:PyBrain - how to do Deep belief network training?PyBrain - 如何进行深度信念网络训练?
【发布时间】:2014-08-31 04:59:51
【问题描述】:

我在使用 Pybrain 训练 DBN 时遇到了一些困难。 首先我尝试用简单的方法来做:

net = buildNetwork(*layerDims)

我遇到了这个问题:How to do supervised deepbelief training in PyBrain?,建议的解决方案只是导致另一个错误:

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

所以我尝试从头开始定义一个网络!

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

当我跑步时:

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

我看到这个错误:

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'

这与相关RBM中的隐藏层有关。

我错过了什么吗?

【问题讨论】:

  • 你需要制作一个输出模块。所以 addModule(output) 应该是 addOutputModule(output)。
  • Pybrain 是一个非常慢的库。我转向了其他库,例如 caffe 或 c 库,它们的速度提高了 25 倍或更多。
  • 我建议不要使用这个旧库,而是查看基于Theano 的库,例如Blocks

标签: python pybrain deep-learning dbn


【解决方案1】:

你初始化一个名为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()

但是你作为参数传递 net1:

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

这肯定会导致错误。

所以

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

应该可以解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2023-02-01
    • 2012-08-16
    • 2017-10-12
    • 2015-03-30
    • 2014-08-24
    • 1970-01-01
    相关资源
    最近更新 更多