PyBrain:从头开始创建网络时如何以及在何处创建偏差?

Use*_*ser 6 python neural-network pybrain

遵循PyBrain文档,使用模块和连接构建网络,我正在逐步构建神经网络(与使用buildNetwork快捷方式相反).我正在构建一个简单的3层(输入,隐藏,输出)神经网络.如何正确添加偏置单元?

我猜我在构建一个BiasUnit模块:

b = BiasUnit(name='bias')
network.addModule(b)
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?我必须创建FullConnection对象吗?如果是这样,我应该连接什么?

Use*_*ser 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
...
Run Code Online (Sandbox Code Playgroud)

基本上它看起来像创建一个BiasUnit并将其连接到每个隐藏层,也可选择连接到输出层.