私は非常に単純な問題を抱えていますが、それを解決する適切なツールを見つけることができません。
同じ長さのベクトルのシーケンスがいくつかあります。ここで、これらのシーケンスのトレーニングサンプルでLSTM RNNをトレーニングし、いくつかのプライミングベクトルに基づいて長さのベクトルの新しいシーケンスを予測するようにします。
これを行う簡単な実装は見つかりません。私の基本言語はPythonですが、何日間もインストールされないものはすべて保持されます。
Lasagneを使用しようとしましたが、RNNの実装はまだ準備ができておらず、別個のパッケージnntoolsにあります。とにかく、私は後者を試しましたが、それを訓練する方法を理解できず、いくつかのテストベクトルでそれを準備し、新しい人を予測させることができません。ブロックも同じ問題です-LSTM RNNのドキュメントはありませんが、動作する可能性のあるクラスと関数がいくつかあるようです(例:)blocks.bricks.recurrent
。
そこいくつかのTheanoにおけるRNN LSTMの実装、などがあるGroundHog
、theano-rnn
、theano_lstm
およびいくつかの論文のためのコードは、しかし、それらの非は私がやりたいことがどのようにチュートリアルやガイドを持っています。
私が見つけた唯一の使用可能な解決策は、Pybrainを使用することでした。しかし、残念なことに、Theanoの機能(主にGPU計算)が欠けており、孤立しています(新しい機能やサポートはありません)。
誰が私が求めているものを見つけることができる場所を知っていますか?ベクトルのシーケンスを予測するためにRNN LSTMを使いやすいですか?
編集:
私はこのようにケラスを試しました:
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.layers.embeddings import Embedding
from keras.layers.recurrent import LSTM
model = Sequential()
model.add(Embedding(12, 256))
model.regularizers = []
model(LSTM(256, 128, activation='sigmoid',
inner_activation='hard_sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(128, 12))
model.add(Activation('sigmoid'))
model.compile(loss='mean_squared_error', optimizer='rmsprop')
しかし、フィットしようとするとこのエラーが発生します model.fit(X_train, y_train, batch_size=16, nb_epoch=10)
IndexError: index 800 is out of bounds for axis 1 with size 12
while X_train
とy_train
は、配列の配列(長さ12)です。例えば[[i for i in range(12)] for j in range(1000)]