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

如何使用训练好的Keras CNN模型对新无标签时间序列数据执行预测

基于训练好的multi_conv_model执行温度预测的正确调用方法

代码错误点说明

  • 输入时间步长度不需要20个,模型内置Lambda层只会截取最后3个时间步计算,核心要求是输入的特征顺序、数量和训练时完全一致
  • 你调用的变量名是conv_model,但训练完成的模型变量名是multi_conv_model,变量名不匹配会返回错误结果
  • 没有对预测结果做反归一化,直接输出的是标准化后的数值,不是真实温度值
  • 没有对齐输出维度和实际需求,模型输出维度为[batch, 输出步长, 特征数],需要单独提取温度特征对应的维度

正确可运行代码示例

前提:train_mean、train_std、OUT_STEPS、num_features参数和训练时的取值完全一致,输入的predict_inputs_df列顺序、列数量和训练数据集完全一致

import numpy as np
import tensorflow as tf

# 1. 取最近3个时间步的输入即可,和模型要求的CONV_WIDTH参数匹配
predict_inputs_df = test_df[-3:]
# 2. 标准化逻辑必须和训练时完全对齐,使用训练集的均值、方差
predict_inputs_norm = (predict_inputs_df - train_mean) / train_std
# 3. 调整输入维度为[batch_size, 时间步, 特征数],单样本预测时batch_size=1
input_tensor = np.array(predict_inputs_norm)[np.newaxis, :, :]
# 4. 调用Keras predict方法执行预测
predictions_norm = multi_conv_model.predict(input_tensor, verbose=0)
# 5. 反归一化得到真实温度值,假设温度列是数据集第0列,可根据实际列顺序调整索引
temperature_predictions = predictions_norm[0, :, 0] * train_std['T (degC)'] + train_mean['T (degC)']

# 输出5个周期的温度预测结果
print("未来5周期温度预测结果:")
for step, temp in enumerate(temperature_predictions, 1):
    print(f"第{step}周期:{temp:.2f}℃")

关键逻辑说明

  • 模型要求输入至少包含最近3个时间步的完整特征,输入更多时间步不会影响结果,模型会自动截取最后3个计算
  • 输出维度解释:返回的predictions_norm形状为(1, OUT_STEPS, num_features),其中OUT_STEPS=5就是你需要的5个预测周期,最后一维是所有特征的预测值,按需提取对应特征即可
  • 标准化逻辑必须完全对齐训练流程,禁止使用测试集的均值方差做输入标准化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:48:02