У мене дуже проста проблема, але я не можу знайти правильний інструмент для її вирішення.
У мене є деяка послідовність векторів однакової довжини. Тепер я хотів би навчити LSTM RNN на зразку поїздів цих послідовностей, а потім змусити його передбачити нову послідовність векторів довжиною на основі декількох векторів праймінгу .
Я не можу знайти просту реалізацію, яка б це зробила. Моя основна мова - Python, але все, що не встановлюється днями, буде тримати.
Я намагався використовувати Lasagne , але реалізація RNN ще не готова і знаходиться в окремому пакеті nntools . У всякому разі, я спробував останній, але не можу зрозуміти, як його тренувати, а потім прокласти його за допомогою деяких тестових векторів і дозволити йому передбачити нових (-ів). Блоки є тією ж проблемою - жодна документація не доступна для LSTM RNN, хоча здається, що існують деякі класи та функції, які можуть працювати (наприклад blocks.bricks.recurrent
).
Є кілька реалізація РНН LSTM в Theano, як GroundHog
, theano-rnn
, theano_lstm
і код для деяких робіт, але не з них мають підручник або керівництво , як зробити те , що я хочу.
Єдине корисне для мене рішення - це використання Pybrain. Але, на жаль, йому не вистачає можливостей Theano (в основному обчислення GPU) і він осиротів (немає нових можливостей та підтримки).
Хтось знає, де я міг би знайти те, про що прошу? Легко працювати з RNN LSTM для прогнозування послідовностей векторів?
Редагувати:
Я спробував Кераса так:
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')
але я отримую цю помилку при спробі її пристосувати 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
в той час як X_train
і y_train
є масивами масивів (довжиною 12), наприклад[[i for i in range(12)] for j in range(1000)]