Tengo problema muy simple, pero no puedo encontrar una herramienta adecuada para resolverlo.
Tengo alguna secuencia de vectores de la misma longitud. Ahora me gustaría entrenar LSTM RNN en el tren de la muestra de estas secuencias, y luego hacen para predecir nueva secuencia de vectores de longitud $n$ basado en varios de cebado de los vectores.
No puedo encontrar la simple implementación que habría hecho esto. Mi idioma base es el de Python, pero nada de lo que no se instala por días se espera.
He intentado utilizar la Lasaña, pero la ejecución de la RNN aún no está listo y es en separaron paquete nntools. De todos modos, he probado la última, pero no puedo averiguar cómo se entrena, el entonces primer algunos vectores de pruebas y vamos a predecir el newone(s). Los bloques son el mismo problema - la documentación está disponible para LSTM RNN, aunque parece que hay algunas clases y funciones que podrían trabajo (por ejemplo blocks.bricks.recurrent
).
Hay varios implementación de la RNN LSTM en Theano, como GroundHog
, theano-rnn
, theano_lstm
y el código para algunos papeles, pero no de los que han tutorial o guía de cómo hacer lo que quiero.
La única utilizable solución que he encontrado es que el uso de Pybrain. Pero, por desgracia, carece de las características de Theano (principalmente de la computación de la GPU) y es huérfano (no nuevas características y soporte).
¿Alguien sabe donde podría encontrar lo que estoy pidiendo? Fácil de trabajar con RNN LSTM para la predicción de secuencias de vectores?
Editar:
Traté de Keras como este:
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')
pero que estoy recibiendo este mensaje de error al intentar encajar 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
mientras X_train
y y_train
son matrices de matrices (de longitud 12), por ejemplo [[i for i in range(12)] for j in range(1000)]