2016-09-28 4 views
2

Я понимаю stateful LSTM prediction example в Keras на одной последовательности. Этот пример имеет одну последовательность из 50 тыс. Наблюдений.Прогнозирование временных рядов с керами и несколькими последовательностями

Мои вопросы:

  • Что делать, если вы хотите, чтобы обучить несколько последовательностей 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

Смежные вопросы