2015-08-02 7 views
7

Ich frage mich, ob es eine Möglichkeit gibt, jede Schicht in Lasagne neuronalen Netzwerk-Toolkit Vorspannungsknoten hinzuzufügen? Ich habe versucht, verwandte Informationen in der Dokumentation zu finden.Bias zu Lasagne neuronalen Netzwerkschichten hinzufügen

Dies ist das Netzwerk, das ich gebaut habe, aber ich weiß nicht, wie man jeder Schicht einen Bias-Knoten hinzufügt.

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 

Antwort

9

Eigentlich müssen Sie nicht explizit Vorurteile schaffen, weil DenseLayer() und Faltung Basis zu Schichten, hat ein Standard-Schlüsselwort-Argument:

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

So können Sie vermeiden, bias zu erstellen, wenn Sie nicht explizit bias=None übergeben möchten, aber das ist nicht der Fall.

So kurz tun Sie Bias-Parameter haben, während Sie nicht None-bias Parameter z.B .:

hidden = Denselayer(...bias=None) 
passieren kann