Lasagne ist eine leichtgewichtige Bibliothek zum Aufbau und Training neuronaler Netze in Theano. Seine Hauptmerkmale sind:
Sein Design unterliegt sechs Prinzipien:
Kurz gesagt, Sie können eine bekanntermaßen kompatible Version von Theano und die neueste Lasagne-Entwicklungsversion installieren über:
pip install -r https://raw.githubusercontent.com/Lasagne/Lasagne/master/requirements.txt
pip install https://github.com/Lasagne/Lasagne/archive/master.zip
Weitere Details und Alternativen finden Sie in der Installationsanleitung.
Die Dokumentation ist online verfügbar: http://lasagne.readthedocs.org/
Für Unterstützung wenden Sie sich bitte an die Mailingliste für Lasagne-Benutzer.
import lasagne
import theano
import theano . tensor as T
# create Theano variables for input and target minibatch
input_var = T . tensor4 ( 'X' )
target_var = T . ivector ( 'y' )
# create a small convolutional neural network
from lasagne . nonlinearities import leaky_rectify , softmax
network = lasagne . layers . InputLayer (( None , 3 , 32 , 32 ), input_var )
network = lasagne . layers . Conv2DLayer ( network , 64 , ( 3 , 3 ),
nonlinearity = leaky_rectify )
network = lasagne . layers . Conv2DLayer ( network , 32 , ( 3 , 3 ),
nonlinearity = leaky_rectify )
network = lasagne . layers . Pool2DLayer ( network , ( 3 , 3 ), stride = 2 , mode = 'max' )
network = lasagne . layers . DenseLayer ( lasagne . layers . dropout ( network , 0.5 ),
128 , nonlinearity = leaky_rectify ,
W = lasagne . init . Orthogonal ())
network = lasagne . layers . DenseLayer ( lasagne . layers . dropout ( network , 0.5 ),
10 , nonlinearity = softmax )
# create loss function
prediction = lasagne . layers . get_output ( network )
loss = lasagne . objectives . categorical_crossentropy ( prediction , target_var )
loss = loss . mean () + 1e-4 * lasagne . regularization . regularize_network_params (
network , lasagne . regularization . l2 )
# create parameter update expressions
params = lasagne . layers . get_all_params ( network , trainable = True )
updates = lasagne . updates . nesterov_momentum ( loss , params , learning_rate = 0.01 ,
momentum = 0.9 )
# compile training function that updates parameters and returns training loss
train_fn = theano . function ([ input_var , target_var ], loss , updates = updates )
# train network (assuming you've got some training data in numpy arrays)
for epoch in range ( 100 ):
loss = 0
for input_batch , target_batch in training_data :
loss += train_fn ( input_batch , target_batch )
print ( "Epoch %d: Loss %g" % ( epoch + 1 , loss / len ( training_data )))
# use trained network for predictions
test_prediction = lasagne . layers . get_output ( network , deterministic = True )
predict_fn = theano . function ([ input_var ], T . argmax ( test_prediction , axis = 1 ))
print ( "Predicted class for first test input: %r" % predict_fn ( test_data [ 0 ]))
Ein voll funktionsfähiges Beispiel finden Sie unter examples/mnist.py. Ausführliche Erläuterungen dazu finden Sie im Tutorial. Weitere Beispiele, Codeausschnitte und Reproduktionen aktueller Forschungsarbeiten werden im separaten Lasagne Recipes-Repository verwaltet.
Wenn Sie Lasagne für Ihre wissenschaftliche Arbeit nützlich finden, denken Sie bitte darüber nach, sie in resultierenden Veröffentlichungen zu zitieren. Wir stellen einen gebrauchsfertigen BibTeX-Eintrag zum Zitieren von Lasagne zur Verfügung.
Lasagne ist in Arbeit, Beiträge sind willkommen.
Einzelheiten dazu, wie Sie beitragen können, finden Sie in den Beitragsanweisungen!