Neural-Networks

使用 RNN (LSTM) 預測時間序列向量 (Theano)

  • June 29, 2015

我有一個非常簡單的問題,但我找不到合適的工具來解決它。

我有一些相同長度的向量序列。現在我想在這些序列的訓練樣本上訓練 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

whileX_trainy_train是數組的數組(長度為 12),例如[[i for i in range(12)] for j in range(1000)]

我終於找到了一種方法並將其記錄在我的博客上。

有幾個框架的比較,然後還有 Keras 中的一種實現。

引用自:https://stats.stackexchange.com/questions/159148

comments powered by Disqus