2
我瞭解Keras中的stateful LSTM prediction example單一序列。這個例子有一個50k觀察序列。用keras和多個序列進行時間序列預測
我的問題:
- ,如果你想培養的50K觀察多個序列是什麼?說一個開始/結束於不同的值,並有一個稍微不同的行爲?
- 如何修改示例以增加預測時間步長?
- LSTMs甚至對這種事情有益嗎?
具有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)
謝謝,我讀過。我不瞭解你,但它並沒有幫助我回答我的問題。沒有代碼,它不涉及多個序列。 – citynorman
他實現並描述了一個有狀態LSTM的玩具示例,該示例在「掌握有狀態模型」部分的多個序列中進行訓練。 – bruThaler