2014-07-03 19 views
0

我有一個有兩個隱藏層的神經網絡。我想僅爲第二個隱藏層添加偏置單元。我怎麼做?在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() 

回答

3

這是相當簡單的任務。首先,你必須創建偏置模塊:

bias = BiasUnit() 

然後將其添加到您的NeuralNetwork,所以:

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

希望有所幫助。

+0

是否還有一個快捷方式爲所有隱藏層添加偏置單位(沒有明確的「for」循環:))? – schmi