Keras:在下一个时间步将输出作为输入馈送

Keras:在下一个时间步将输出作为输入馈送,keras,time-series,output,recurrent-neural-network,Keras,Time Series,Output,Recurrent Neural Network,目标是预测时间序列Y为87601个时间步(10年)和9个目标。输入特征X(外部输入)是11个时间序列,共87600个时间步。输出还有一个timestep,因为这是初始值。 时间步t的输出Yt取决于输入Xt和先前的输出Yt-1 因此,模型应如下所示: 我只能在此上找到此线程:。 我试图通过Keras实现这一点,如下所示: def build_model(): #输入层 输入=图层。输入(形状=(特征),名称=(输入) input_y=layers.input(shape=(targets),nam

目标是预测时间序列Y为87601个时间步(10年)和9个目标。输入特征X(外部输入)是11个时间序列,共87600个时间步。输出还有一个timestep,因为这是初始值。 时间步t的输出Yt取决于输入Xt和先前的输出Yt-1

因此,模型应如下所示:

我只能在此上找到此线程:。 我试图通过Keras实现这一点,如下所示:

def build_model():
#输入层
输入=图层。输入(形状=(特征),名称=(输入)
input_y=layers.input(shape=(targets),name='input_y-1')
#合并两个输入
合并=层。连接([input\u x,input\u y],name='merge')
#正常化输入
norm=layers.Lambda(标准化,name='scale')(合并)
#隐藏层
x=层。密集(128,输入形状=(特征,)(标准)
#输出层
输出=layers.Dense(目标,activation='relu',name='output')(x)
模型=模型(输入=[输入x,输入y],输出=输出)
compile(loss='mean_squared_error',optimizer=Adam())
回归模型
def make_预测(模型,X,y):
y_pred=[y[0,无,:]]
对于范围内的i(len(X)):
y_pred.append(model.predict([X[i,None,:],y_pred[i]]))
y_pred=np.asarray(y_pred)
y_pred=y_pred.重塑(y_pred.形状[0],y_pred.形状[2])
返回y_pred
#合身
模型=构建模型()
模型拟合([X_-train,y_-train[:-1],[y_-train[1:]],历代=200,
批量(大小=24,随机播放=False)
#预测
y_hat=进行预测(模型、X_序列、y_序列)
这是可行的,但这不是我想要实现的,因为我已经做到了。因此,该模型没有学习如何纠正反馈输出中的错误,这导致预测时的准确性较差,因为输出上的错误在每个时间步都会累积

Keras中是否有方法在培训阶段实施输出-输入反馈?
此外,由于Y的初始值总是已知的,我也想将其反馈给网络。

你做到了吗?@Sam我还没有找到一种方法来做到这一点,但我确实成功地获得了准确的预测结果,请看如何。@Astrid你找到了如何管理它的方法吗???正如我上面所说,我没有做到,尽管我找到了另一种方法使其工作(参见前面评论中的链接)。