在PyBrain文档Building Networks with Modules and Connections之后,我正在逐步构建神经网络(与使用buildNetwork快捷方式相反)。我正在构建一个简单的3层(输入,隐藏,输出)神经网络。如何正确添加偏置单元?
我猜我构建了一个BiasUnit
模块,如下所示:
b = BiasUnit(name='bias')
network.addModule(b)
这是正确的方法吗?我是否必须创建FullConnection
对象?如果是这样,我应该连接什么?
答案 0 :(得分:10)
已实现的PyBrain是开源的,我的源代码位于我的Python目录中。我打开了C:\ Python27 \ Lib \ site-packages \ pybrain \ tools \ shortcuts.py文件。在这个文件里面,我找到了buildNetwork函数,看看它是如何添加BiasUnit的。相关代码在这里:
...
n = Network()
# linear input layer
n.addInputModule(LinearLayer(layers[0], name='in'))
# output layer of type 'outclass'
n.addOutputModule(opt['outclass'](layers[-1], name='out'))
if opt['bias']:
# add bias module and connection to out module, if desired
n.addModule(BiasUnit(name='bias'))
if opt['outputbias']:
n.addConnection(FullConnection(n['bias'], n['out']))
# arbitrary number of hidden layers of type 'hiddenclass'
for i, num in enumerate(layers[1:-1]):
layername = 'hidden%i' % i
n.addModule(opt['hiddenclass'](num, name=layername))
if opt['bias']:
# also connect all the layers with the bias
n.addConnection(FullConnection(n['bias'], n[layername]))
# connections between hidden layers
...
基本上它看起来像是创建一个BiasUnit并将它连接到每个隐藏层,也可以选择连接到输出层。
答案 1 :(得分:1)
这里有simple example:
n = RecurrentNetwork()
n.addModule(TanhLayer(hsize, name = 'h'))
n.addModule(BiasUnit(name = 'bias'))
n.addOutputModule(LinearLayer(1, name = 'out'))
n.addConnection(FullConnection(n['bias'], n['h']))
n.addConnection(FullConnection(n['h'], n['out']))
n.sortModules()
请注意,BiasUnit
已与TanhLayer
连接,有效地使h
图层成为偏向的图层。