J'ai un problème très simple mais je ne trouve pas le bon outil pour le résoudre.
J'ai une séquence de vecteurs de même longueur. Maintenant, je voudrais former LSTM RNN sur un échantillon de train de ces séquences et ensuite le faire pour prédire une nouvelle séquence de vecteurs de longueur basée sur plusieurs vecteurs d' amorçage .
Je ne trouve pas de mise en œuvre simple qui ferait cela. Ma langue de base est Python, mais tout ce qui ne s'installe pas pendant des jours est valable.
J'ai essayé d'utiliser Lasagne , mais l'implémentation de RNN n'est pas encore prête et elle est dans un paquet séparé nntools . Quoi qu'il en soit, j'ai essayé le dernier mais je ne peux pas comprendre comment l'entraîner, puis l'amorcer avec des vecteurs de test et le laisser prédire le (s) nouveau (s). Les blocs sont le même problème - aucune documentation n'est disponible pour LSTM RNN, bien qu'il semble qu'il existe certaines classes et fonctions qui pourraient fonctionner (par exemple blocks.bricks.recurrent
).
Il y a plusieurs de mise en œuvre RNN LSTM dans Théano, comme GroundHog
, theano-rnn
, theano_lstm
et code pour des papiers, mais non de ceux -ci ont tutoriel ou de guide comment faire ce que je veux.
La seule solution utilisable que j'ai trouvée était d'utiliser Pybrain. Mais malheureusement, il manque les fonctionnalités de Theano (principalement le calcul GPU) et est orphelin (pas de nouvelles fonctionnalités et support).
Est-ce que quelqu'un sait où je pourrais trouver ce que je demande? Facile à travailler avec RNN LSTM pour prédire les séquences de vecteurs?
Éditer:
J'ai essayé Keras comme ceci:
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')
mais je reçois cette erreur en essayant de l'adapter 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
tandis que X_train
et y_train
sont des tableaux de tableaux (de longueur 12), p.ex.[[i for i in range(12)] for j in range(1000)]