2016-09-28 3 views
2

Keras의 단일 시퀀스에서 stateful LSTM prediction example을 이해합니다. 이 예제에는 50k 관측 시퀀스가 ​​하나 있습니다.케라 및 다중 시퀀스를 사용한 시계열 예측

내 질문 :

  • 당신이 5 만 명 관찰의 여러 시퀀스를 훈련 할 경우 어떻게? 다른 값으로 시작하거나 끝나고 약간 다른 동작을한다고 가정 해보십시오.
  • 예를 수정하여 예측 시간 단계를 늘리는 방법은 무엇입니까?
  • 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

필립 레미 (Philippe Remy)가 blog post을 확인하십시오. 케라에서 상태 저장 LSTM을 사용하는 방법을 설명합니다.

+0

감사합니다. 나는 너에 대해 잘 모르지만 내 질문에 대답하는 데 도움이되지 못했다. 코드가 없으며 여러 시퀀스를 처리하지 않습니다. – citynorman

+0

그는 "Stateful Modeling Mastering"섹션에서 두 개 이상의 시퀀스에 대해 트레이닝하는 stateful LSTM의 장난감 예제를 구현하고 설명합니다. – bruThaler