【问题标题】:Add bias to Lasagne neural network layers向 Lasagne 神经网络层添加偏差
【发布时间】:2015-10-24 17:29:08
【问题描述】:

我想知道是否有一种方法可以在 Lasagne 神经网络工具包中的每一层添加偏置节点?我一直在尝试在文档中查找相关信息。

这是我构建的网络,但我不知道如何为每一层添加偏置节点。

def build_mlp(input_var=None):
    # This creates an MLP of two hidden layers of 800 units each, followed by
    # a softmax output layer of 10 units. It applies 20% dropout to the input
    # data and 50% dropout to the hidden layers.

    # Input layer, specifying the expected input shape of the network
    # (unspecified batchsize, 1 channel, 28 rows and 28 columns) and
    # linking it to the given Theano variable `input_var`, if any:
    l_in = lasagne.layers.InputLayer(shape=(None, 60),
                                     input_var=input_var)

    # Apply 20% dropout to the input data:
    l_in_drop = lasagne.layers.DropoutLayer(l_in, p=0.2)

    # Add a fully-connected layer of 800 units, using the linear rectifier, and
    # initializing weights with Glorot's scheme (which is the default anyway):
    l_hid1 = lasagne.layers.DenseLayer(
            l_in_drop, num_units=800,
            nonlinearity=lasagne.nonlinearities.rectify,
            W=lasagne.init.Uniform())

    # We'll now add dropout of 50%:
    l_hid1_drop = lasagne.layers.DropoutLayer(l_hid1, p=0.5)

    # Another 800-unit layer:
    l_hid2 = lasagne.layers.DenseLayer(
            l_hid1_drop, num_units=800,
            nonlinearity=lasagne.nonlinearities.rectify)

    # 50% dropout again:
    l_hid2_drop = lasagne.layers.DropoutLayer(l_hid2, p=0.5)

    # Finally, we'll add the fully-connected output layer, of 10 softmax units:
    l_out = lasagne.layers.DenseLayer(
            l_hid2_drop, num_units=2,
            nonlinearity=lasagne.nonlinearities.softmax)

    # Each layer is linked to its incoming layer(s), so we only need to pass
    # the output layer to give access to a network in Lasagne:
    return l_out

【问题讨论】:

    标签: python neural-network theano lasagne


    【解决方案1】:

    实际上你不必显式地创建偏差,因为DenseLayer() 和卷积基础层也有一个默认的关键字参数:

    b=lasagne.init.Constant(0.).

    因此,如果您不想显式传递bias=None,则可以避免创建bias,但事实并非如此。

    因此,简而言之,您确实有偏差参数,而您没有将 None 传递给 bias 参数,例如:

    hidden = Denselayer(...bias=None)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 2016-09-08
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      相关资源
      最近更新 更多