2016-09-28 11 views
2

ケラスのstateful LSTM prediction exampleは単一のシーケンスで理解できます。この例では、50k観測のシーケンスが1つあります。ケラスと複数のシーケンスによる時系列予測

私の質問:

  • あなたが50K観測の複数のシーケンスを訓練したい場合はどう?異なる値で開始/終了し、少し異なる動作をしているとしますか?
  • 例を変更して予測時間ステップを増やすにはどうすればよいですか?
  • LSTMはそのようなことにもまったく適していますか?

完全に複製可能な3つの平均復帰時系列を持ち、20ステップアウトを予測する例。

# generate random data 
import statsmodels.api as sm 
import numpy as np 
import pandas as pd 

cfg_t_total = 25000 
cfg_t_step = 20 
cfg_batch_size = 100 

np.random.seed(12345) 
arparams = np.array([.75, -.25]) 
maparams = np.array([.65, .35]) 
ar = np.r_[1, -arparams] # add zero-lag and negate 
ma = np.r_[1, maparams] # add zero-lag 
y0 = sm.tsa.arma_generate_sample(ar, ma, cfg_t_total) 
y1 = sm.tsa.arma_generate_sample(ar, ma, cfg_t_total) 
y2 = sm.tsa.arma_generate_sample(ar, ma, cfg_t_total) 

df=pd.DataFrame({'a':y0,'b':y1,'c':y2}) 

df.head(100).plot() 

df.head(5) 

# create training data format 
X = df.unstack() 
y = X.groupby(level=0).shift(-cfg_t_step) 

idx_keep = ~(y.isnull()) 
X = X.ix[idx_keep] 
y = y.ix[idx_keep] 

from keras.models import Sequential 
from keras.layers import Dense, LSTM 

# LSTM taken from https://github.com/fchollet/keras/blob/master/examples/stateful_lstm.py 
# how to do this...?! 
print('Creating Model') 
model = Sequential() 
model.add(LSTM(50, 
       batch_input_shape=(cfg_batch_size, cfg_t_step, 1), 
       return_sequences=True, 
       stateful=True)) 
model.add(LSTM(50, 
       batch_input_shape=(cfg_batch_size, cfg_t_step, 1), 
       return_sequences=False, 
       stateful=True)) 
model.add(Dense(1)) 
model.compile(loss='mse', optimizer='rmsprop') 

model.fit(X, y, batch_size=cfg_batch_size, verbose=2, validation_split=0.25, nb_epoch=1, shuffle=False) 

答えて

0

フィリップ・レミーすることにより、このblog postをチェックしてください。ステートフルLSTMをケラスで使用する方法について説明します。

+0

ありがとう、私はそれを読んだ。私はあなたについて知りませんが、それは私の質問に答えるのを助けませんでした。コードはなく、複数のシーケンスに対応していません。 – citynorman

+0

彼は、ステートフルなLSTMのためのおもちゃの例を実装し、「ステートフルモデルのマスター」のセクションで複数のシーケンスでトレーニングします。 – bruThaler

関連する問題