【问题标题】:How is bias added to specific hidden layers of a Neural Network in PyBrain?PyBrain 中如何将偏差添加到神经网络的特定隐藏层?
【发布时间】:2014-08-05 21:23:27
【问题描述】:

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

我的网络代码如下:

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

【问题讨论】:

    标签: python neural-network pybrain


    【解决方案1】:

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

    bias = BiasUnit()
    

    然后将其添加到您的神经网络中,因此:

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

    希望有所帮助。

    【讨论】:

    • 是否还有一种快捷方式可以将偏置单元添加到所有隐藏层(无需明确的“for”循环:))?
    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多