Ich habe ein sehr einfaches Problem, aber ich kann kein passendes Werkzeug finden, um es zu lösen.
Ich habe eine Folge von Vektoren gleicher Länge. Jetzt möchte ich LSTM RNN auf dem Zugmuster dieser Sequenzen trainieren und es dann machen, um eine neue Sequenz von Vektoren der Länge basierend auf mehreren Priming- Vektoren vorherzusagen .
Ich kann keine einfache Implementierung finden, die dies tun würde. Meine Basissprache ist Python, aber alles, was seit Tagen nicht installiert wird, wird Bestand haben.
Ich habe versucht, Lasagne zu verwenden , aber die Implementierung von RNN ist noch nicht fertig und befindet sich in einem separaten Paket nntools . Wie auch immer, ich habe das letztere ausprobiert, aber ich kann nicht herausfinden, wie es trainiert werden soll. Dann habe ich es mit einigen Testvektoren vorbereitet und lasse es das / die Neue (n) vorhersagen. Blöcke sind das gleiche Problem - für LSTM RNN ist keine Dokumentation verfügbar, obwohl es anscheinend einige Klassen und Funktionen gibt, die funktionieren könnten (z blocks.bricks.recurrent
. B. ).
Es gibt mehrere Implementierung von RNN LSTM in Theano, wie GroundHog
, theano-rnn
, theano_lstm
und den Code für einige Papiere, aber nicht von denen haben Tutorial oder führt , wie zu tun , was ich will.
Die einzige brauchbare Lösung, die ich gefunden habe, war die Verwendung von Pybrain. Aber leider fehlen die Funktionen von Theano (hauptsächlich GPU-Berechnung) und sie sind verwaist (keine neuen Funktionen und Unterstützung).
Weiß jemand, wo ich finden könnte, wonach ich bitte? Einfach mit RNN LSTM zu arbeiten, um Sequenzen von Vektoren vorherzusagen?
Bearbeiten:
Ich habe Keras so ausprobiert:
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')
aber ich erhalte diesen Fehler, wenn ich versuche, ihn anzupassen 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
und y_train
sind Arrays von Arrays (Länge 12), z[[i for i in range(12)] for j in range(1000)]