Ho un problema molto semplice ma non riesco a trovare lo strumento giusto per risolverlo.
Ho una sequenza di vettori della stessa lunghezza. Ora vorrei addestrare LSTM RNN sul treno campione di queste sequenze e poi farlo predire una nuova sequenza di vettori di lunghezza basata su diversi vettori di priming .
Non riesco a trovare una semplice implementazione che lo farebbe. Il mio linguaggio di base è Python, ma tutto ciò che non viene installato per giorni conterrà.
Ho provato a usare Lasagne , ma l'implementazione di RNN non è ancora pronta ed è in pacchetti nntools separati . Comunque, ho provato quest'ultimo, ma non riesco a capire come addestrarlo, quindi adescarlo da alcuni vettori di test e lasciare che preveda il / i nuovo / i. I blocchi sono lo stesso problema: non è disponibile alcuna documentazione per LSTM RNN, anche se sembra che ci siano alcune classi e funzioni che potrebbero funzionare (ad es blocks.bricks.recurrent
.).
Ci sono diversi attuazione RNN LSTM in Theano, come GroundHog
, theano-rnn
, theano_lstm
e il codice per alcune carte, ma non di questi sono tutorial o guida come fare quello che voglio.
L'unica soluzione utilizzabile che ho trovato era l'uso di Pybrain. Ma sfortunatamente manca le funzionalità di Theano (principalmente calcolo della GPU) ed è orfano (nessuna nuova funzionalità e supporto).
Qualcuno sa dove ho potuto trovare quello che sto chiedendo? Facile da lavorare con RNN LSTM per prevedere sequenze di vettori?
Modificare:
Ho provato Keras in questo modo:
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')
ma ricevo questo errore quando provo ad adattarlo 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
mentre X_train
e y_train
sono matrici di matrici (di lunghezza 12), ad es[[i for i in range(12)] for j in range(1000)]