You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Keras搭建的LSTM模型在训练集上的预测结果

LSTM模型获取训练集预测结果实现方法

现有代码说明

当前使用的双层LSTM网络用于单变量多特征预测任务,已完成训练集、测试集拆分,核心代码如下:

from keras.layers import Dense, LSTM, Dropout

model=Sequential()
model.add(LSTM(units=50,return_sequences=True, input_shape=(1,5)))
model.add(Dropout(0.2))
model.add(LSTM(units=50))
model.add(Dropout(0.2))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mean_squared_error')

model.fit(X_train_shape,y_train, epochs=100, batch_size=48)

上述代码训练完成后仅支持输出测试集预测结果,无法直接获取训练集的拟合预测值。

实现方法

Keras框架中训练完成的模型可通过predict()方法对任意符合输入维度要求的数据集做推理,不需要修改模型结构或重新训练,只需在训练完成后分别传入训练集、测试集的特征矩阵即可得到对应预测结果。

操作步骤

  • 确认训练集特征矩阵X_train_shape维度匹配模型输入要求,即形状满足(样本数, 1, 5),和训练时传入的输入形状一致
  • 模型训练结束后,分别传入训练集特征、测试集特征调用predict()方法,分别存储两个数据集的预测结果
  • 若前期对数据做了归一化/标准化处理,需要对得到的train_predict、test_predict和对应真实值做反归一化,才能和原始数据尺度对齐做效果评估

修改后完整代码

# 补全原代码缺失的Sequential导入,否则运行会报NameError
from keras.models import Sequential
from keras.layers import Dense, LSTM, Dropout

model=Sequential()
model.add(LSTM(units=50,return_sequences=True, input_shape=(1,5)))
model.add(Dropout(0.2))
model.add(LSTM(units=50))
model.add(Dropout(0.2))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mean_squared_error')

# 执行模型训练
model.fit(X_train_shape,y_train, epochs=100, batch_size=48)

# 获取两个数据集的预测结果
train_predict = model.predict(X_train_shape) # 训练集预测结果
test_predict = model.predict(X_test_shape)   # 测试集预测结果

提示:训练集预测结果反映的是模型训练完成后对训练数据的拟合能力,不要将其和训练过程中每个epoch批次输出的临时训练预测值混淆。如果需要绘制拟合曲线、计算训练集MSE等指标,直接使用train_predict和真实值y_train计算即可。

内容的提问来源于stack exchange,提问作者Bouram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:39:15