简体   繁体   中英

How is bias added to specific hidden layers of a Neural Network in PyBrain?

I have a Neural Network with two hidden layers. I want to add a bias unit only to the second hidden layer. How do I do that?

The code for my network is as follows:

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()

This is fairly simple task. First you have to create Bias module:

bias = BiasUnit()

Then add it to your NeuralNetwork, so:

nn = FeedForwadNetwork()
nn.addModule(bias)

Then, assuming you already added other layers you have to connect bias to hidden layer of your choice:

bias_to_hiden = FullConnection(bias, hiden_layer)

And then add it to neural network:

nn.addConnection(bias_to_hiden)

Apart from that you do everything same as before.

For the reference check code of the buildNetwork function from pybrain.tools.shortcuts module . Here is some code that connects bias unit to other layers (lines 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']))

Hope that helped.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM