Tengo un problema muy simple pero no puedo encontrar una herramienta adecuada para resolverlo.
Tengo una secuencia de vectores de la misma longitud. Ahora me gustaría entrenar LSTM RNN en la muestra de tren de estas secuencias y luego hacer que prediga una nueva secuencia de vectores de longitud función de varios vectores de cebado .
No puedo encontrar una implementación simple que haga esto. Mi lenguaje base es Python, pero cualquier cosa que no se instale durante días se mantendrá.
Intenté usar Lasagne , pero la implementación de RNN aún no está lista y está en paquetes separados de herramientas . De todos modos, probé el último pero no puedo entender cómo entrenarlo, luego lo preparé con algunos vectores de prueba y dejé que prediga los nuevos. Los bloques son el mismo problema: no hay documentación disponible para LSTM RNN, aunque parece que hay algunas clases y funciones que podrían funcionar (por ejemplo blocks.bricks.recurrent
).
Hay varios implementación de RNN LSTM en Teano, como GroundHog
, theano-rnn
, theano_lstm
y el código para algunos papeles, pero no de ellos han tutorial o guía de cómo hacer lo que quiero.
La única solución utilizable que encontré fue usar Pybrain. Pero desafortunadamente carece de las características de Theano (principalmente el cálculo de GPU) y está huérfano (no hay nuevas características y soporte).
¿Alguien sabe dónde puedo encontrar lo que estoy pidiendo? ¿Fácil de trabajar con RNN LSTM para predecir secuencias de vectores?
Editar:
Intenté Keras así:
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 recibo este error cuando intento ajustarlo 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 y_train
son matrices de matrices (de longitud 12), p. ej.[[i for i in range(12)] for j in range(1000)]