나는 매우 간단한 문제가 있지만 그것을 해결할 수있는 올바른 도구를 찾을 수 없습니다.
길이가 같은 벡터 시퀀스가 있습니다. 이제이 시퀀스의 기차 샘플에 대해 LSTM RNN을 학습 한 다음 여러 프라이밍 벡터를 기반으로 길이 의 새로운 벡터 시퀀스를 예측하려고합니다 .
이 작업을 수행하는 간단한 구현을 찾을 수 없습니다. 내 기본 언어는 Python이지만 며칠 동안 설치되지 않은 것은 유지됩니다.
Lasagne 을 사용하려고 시도했지만 RNN 구현이 아직 준비되지 않았으며 별도의 패키지 nntools에 있습니다. 어쨌든, 나는 후자를 시도했지만 그것을 훈련시키는 방법을 알아낼 수 없었고, 테스트 벡터로 프라이밍하고 새로운 것을 예측하게했습니다. 블록도 같은 문제입니다. LSTM RNN에 대한 문서는 없지만, 작동 할 수있는 클래스와 함수가있는 것 같습니다 (예 :) blocks.bricks.recurrent
.
이 Theano 같은에서 RNN LSTM의 여러 구현되어 GroundHog
, theano-rnn
, theano_lstm
몇 가지 서류 및 코드 왔지만 튜토리얼 사람들의 비 또는 내가 원하는 일을하는 방법을 안내합니다.
내가 찾은 유용한 솔루션은 Pybrain을 사용하는 것입니다. 그러나 불행하게도 Theano (주로 GPU 계산)의 기능이 없으며 고아입니다 (새로운 기능 및 지원 없음).
누구든지 내가 원하는 것을 어디서 찾을 수 있는지 알고 있습니까? 벡터 시퀀스를 예측하기 위해 RNN LSTM을 사용하여 쉽게 작업 할 수 있습니까?
편집하다:
나는 Keras를 다음과 같이 시도했다.
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)]