我有一个带有两个隐藏层的神经网络。我想只为第二个隐藏层添加一个偏置单元。我该怎么做?
我的网络代码如下:
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()
答案 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 module的buildNetwork
函数的参考检查代码。下面是一些将偏置单元连接到其他层的代码(第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']))
希望有所帮助。