如何在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 个回答
4
这其实是个很简单的任务。首先,你需要创建一个偏置模块:
bias = BiasUnit()
然后把它添加到你的神经网络中,像这样:
nn = FeedForwadNetwork()
nn.addModule(bias)
接下来,假设你已经添加了其他层,你需要把偏置连接到你选择的隐藏层:
bias_to_hiden = FullConnection(bias, hiden_layer)
然后把它添加到神经网络中:
nn.addConnection(bias_to_hiden)
除此之外,其他的步骤和之前一样。
如果你想参考一下,可以查看 buildNetwork
函数的代码,链接在这里:pybrain.tools.shortcuts module。这里有一些代码是用来把偏置单元连接到其他层的(第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']))
希望这些对你有帮助。