Eu tenho um problema muito simples, mas não consigo encontrar a ferramenta certa para resolvê-lo.
Eu tenho uma sequência de vetores do mesmo comprimento. Agora eu gostaria de treinar o LSTM RNN na amostra de trem dessas seqüências e, em seguida, prever a nova sequência de vetores de comprimento base em vários vetores priming .
Não consigo encontrar uma implementação simples que faria isso. Minha linguagem base é Python, mas tudo o que não for instalado por dias será válido.
Tentei usar o Lasagne , mas a implementação do RNN ainda não está pronta e está no pacote nntools . Enfim, eu tentei o último, mas não consigo descobrir como treiná-lo, depois apronte-o com alguns vetores de teste e deixe prever o (s) novo (s). Os blocos são o mesmo problema - nenhuma documentação está disponível para o LSTM RNN, embora pareça que existem algumas classes e funções que poderiam funcionar (por exemplo blocks.bricks.recurrent
).
Existem vários implementação de RNN LSTM em Teano, como GroundHog
, theano-rnn
, theano_lstm
e código para alguns papéis, mas não desses têm tutorial ou orientar como fazer o que eu quero.
A única solução utilizável que encontrei foi usar o Pybrain. Infelizmente, porém, ele não possui os recursos do Theano (principalmente computação da GPU) e fica órfão (sem novos recursos e suporte).
Alguém sabe onde eu poderia encontrar o que estou pedindo? Fácil de trabalhar com o RNN LSTM para prever sequências de vetores?
Editar:
Eu tentei Keras assim:
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')
mas estou recebendo esse erro ao tentar ajustá-lo 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
e y_train
são matrizes de matrizes (de comprimento 12), por exemplo[[i for i in range(12)] for j in range(1000)]