Github: https://github.com/Lasagne/Lasagne
ラザニア
Lasagneは、Theanoのニューラルネットワークを構築し、訓練するための軽量ライブラリです。 主な機能は次のとおりです。
- 畳み込みニューラルネットワーク(CNN)などのフィードフォワードネットワーク、長期短期記憶(LSTM)を含む反復ネットワーク、およびそれらの任意の組み合わせをサポートする
- 補助分類器を含む複数の入力と複数の出力のアーキテクチャを可能にする
- ネステロフ運動量、RMSprop、ADAMを含む多くの最適化手法
- 自由に定義可能なコスト関数であり、Theanoの象徴的な微分によって勾配を導出する必要はありません
- Theanoの表現コンパイラによるCPUとGPUの透過的なサポート
- シンプルさ:使いやすく、理解しやすく、拡張しやすく、研究での使用を容易にする
- 透明性:Theanoを抽象化の背後に隠さず、Theano式またはPython / numpyデータ型を直接処理して返します。
- モジュール性:すべてのパーツ(レイヤー、規則正子、オプティマイザなど)をラザニアとは別に使用できるようにする
- 実用主義:一般的なユースケースを簡単にし、珍しいケースを過大評価しない
- 拘束:ユーザーが使用しない機能を妨げないようにする
- 焦点:「一つのことをして、それをうまくやる」
インストール
要するに、Theanoの既知の互換バージョンと最新のLasagne開発バージョンを以下の方法でインストールできます。
pip install -r https://raw.githubusercontent.com/Lasagne/Lasagne/master/requirements.txt
pip install https://github.com/Lasagne/Lasagne/archive/master.zip
詳細および代替方法については、 インストール手順を参照してください 。
ドキュメンテーション
ドキュメントはオンラインで入手できます: http : //lasagne.readthedocs.org/
サポートについては、 lasagne-usersメーリングリストを参照してください。
例
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]))
完全に機能的な例については、 examples / mnist.pyを参照し、同じことについての詳細な説明についてチュートリアルをチェックしてください。 最新の研究論文のサンプル、コードスニペット、複製物は別のLasagne Recipesリポジトリに保存されています。
引用
Lasagneがあなたの科学的研究に有益であることが分かった場合は、その結果の出版物に引用してください。 我々は、 Lasagneを引用してすぐに使用できるBibTeXエントリーを提供します。
開発
ラザニアは進行中の仕事です、入力は歓迎です。