我正在使用Python 2.7.5和PyBrain 0.3(通过pip安装)。我无法重现PyBrain文档页面中的“quickstart”代码,因为函数buildNetwork()似乎没有定义,它会触发NameError。这是代码:
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
ds = SupervisedDataSet(2, 1)
ds.addSample((0, 0), (0,))
ds.addSample((0, 1), (1,))
ds.addSample((1, 0), (1,))
ds.addSample((1, 1), (0,))
# here is the problem \/\/\/\/\/\/\/\/
net = buildNetwork(2, 3, 1, bias=True, hiddenclass=TanhLayer)
trainer = BackpropTrainer(net, ds)
trainer.train()
net.activate([0, 0])
net.activate([0, 1])
net.activate([1, 0])
net.activate([1, 1])
这是我在尝试运行此脚本时收到的错误消息:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-11-d45aee0605fb> in <module>()
----> 1 net = buildNetwork(2, 3, 1, bias=True, hiddenclass=TanhLayer)
NameError: name 'buildNetwork' is not defined
这很奇怪,因为以前的所有行都不会触发任何错误,buildNetwork()函数会出现问题。有人可以帮助我吗?
答案 0 :(得分:3)
您似乎忘记导入该功能:
from pybrain.tools.shortcuts import buildNetwork
请参阅documentation。
每次要使用模块的特殊成员时,都必须导入它。查看文档并搜索该成员。 For example for TanhLayer。您看到该函数位于pybrain.structure.modules
中。所以你必须像
from pybrain.structure.modules import TanhLayer
# or
from pybrain.structure.modules import *
还有其他(有时更干净的)导入功能的方法。来自effbot的This document很好地解释了有什么区别以及你应该使用哪些。