Neural-Networks
使用 RNN (LSTM) 預測時間序列向量 (Theano)
我有一個非常簡單的問題,但我找不到合適的工具來解決它。
我有一些相同長度的向量序列。現在我想在這些序列的訓練樣本上訓練 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
while
X_train
和y_train
是數組的數組(長度為 12),例如[[i for i in range(12)] for j in range(1000)]
我終於找到了一種方法並將其記錄在我的博客上。
有幾個框架的比較,然後還有 Keras 中的一種實現。