【发布时间】:2020-10-03 19:19:50
【问题描述】:
我想从 55 天的训练规模预测 7 天。我尝试应用给定 here 和 here 的模型,但我将所有 7 天的输出值都设为 1。
我也对如何将时间序列作为编码器解码器的输入及其代码感到困惑,我根据自己的理解进行了尝试。
model.add(LSTM(150, input_shape=(None, 1)))
model.add(RepeatVector(8))
model.add(LSTM(150, return_sequences=True))
model.add(TimeDistributed(Dense(1, activation='softmax')))
model.compile(loss='mse', optimizer='adam')
for i in range(7):
x=df[i*7:(i+1)*7]
y=df[(i+1)*7:(i+2)*7]
x=np.array(x)
x=np.insert(x,0,len(x))
x=x.reshape(1,len(x),1)
y=np.array(y)
y=np.insert(y,0,len(y))
y=y.reshape(1,len(y),1)
model.fit(x, y, epochs=1, verbose=2)
训练后,我从整个火车序列中预测 7 天。
第二个我从链接 2 尝试过
#functions define_models and predict_sequence same as link
for i in range(0,47):
x1=df[i:i+7]
print(len(x1))
x2=df[i+1:i+8]
print(len(x2))
y=df[i+1:i+8]
x1=np.array(x1)
x1=np.insert(x1,0,len(x1))
print(len(x1))
x1=x1.reshape(len(x1),1,1)
x2=np.array(x2)
x2=np.insert(x2,0,0)
print(len(x2))
x2=x2.reshape(len(x2),1,1)
y=np.array(y)
y=np.insert(y,0,len(y))
y=y.reshape(len(y),1,1)
model.fit([x1,x2],y,epochs=1)
这也将输出设为 1。 我不确切知道 x2 应该在这里。
请纠正我的错误。
【问题讨论】:
-
您尝试过更简单的预测方法吗?当你说你有 55 天的数据时,这是否意味着你的训练系列中有 55 个数据点?你有额外的时间序列变量吗?
-
@mloning 我尝试了其他方法,如 arima、sarima、xgboost 和 lstm,并且我有这个时间序列的功能。但是为了理解我只是在尝试没有功能。我对这些事情很陌生,所以一次迈出一步。我对编码器解码器的输入格式应该如何感到困惑。
标签: tensorflow time-series lstm recurrent-neural-network encoder-decoder