如何在PyBrain中将偏差添加到神经网络的特定隐藏层?

时间:2014-07-03 07:50:41

标签: python neural-network pybrain

我有一个带有两个隐藏层的神经网络。我想只为第二个隐藏层添加一个偏置单元。我该怎么做?

我的网络代码如下:

nn = FeedForwardNetwork()
inLayer = LinearLayer(numFeatures)
hiddenLayer1 = LinearLayer(numFeatures+1)
hiddenLayer2 = SigmoidLayer(numFeatures+1)
outLayer = LinearLayer(1)

nn.addInputModule(inLayer)
nn.addModule(hiddenLayer1)
nn.addModule(hiddenLayer2)
nn.addOutputModule(outLayer)

in_to_hidden1 = FullConnection(inLayer, hiddenLayer1)
hidden1_to_hidden2 = FullConnection(hiddenLayer1, hiddenLayer2)
hidden2_to_out = FullConnection(hiddenLayer2, outLayer)

nn.addConnection(in_to_hidden1)
nn.addConnection(hidden1_to_hidden2)
nn.addConnection(hidden2_to_out)
nn.sortModules()

1 个答案:

答案 0 :(得分:4)

这是一项相当简单的任务。首先,您必须创建Bias模块:

bias = BiasUnit()

然后将其添加到您的NeuralNetwork,所以:

nn = FeedForwadNetwork()
nn.addModule(bias)

然后,假设您已经添加了其他图层,则必须将偏差连接到您选择的隐藏图层:

bias_to_hiden = FullConnection(bias, hiden_layer)

然后将其添加到神经网络中:

nn.addConnection(bias_to_hiden)

除此之外,你做的事情和以前一样。

来自pybrain.tools.shortcuts modulebuildNetwork函数的参考检查代码。下面是一些将偏置单元连接到其他层的代码(第75-79行):

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']))

希望有所帮助。