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

时序预测编码器-解码器模型推理阶段TypeError报错排查求助

问题排查与修复

核心错误原因

你在推理时传入的enc_states是模型定义阶段的符号KerasTensor,不是经过编码器计算得到的实际数值状态。符号张量的形状中包含None(代表批量维度),无法直接作为推理模型的输入,导致int()转换None的类型错误。

修复步骤

1. 新增编码器状态提取模型

在原模型代码末尾,添加单独的编码器模型,用于从真实输入计算出实际的LSTM状态值:

# 构建编码器模型,输入编码器数据,输出LSTM的h和c状态
encoder_model = keras.models.Model(encoder_inputs, enc_states)

2. 修正推理代码逻辑

先通过编码器模型计算验证集对应的真实状态,再传入推理模型:

# 第一步:用验证集的编码器输入计算实际状态(得到两个numpy数组)
real_enc_states = encoder_model.predict(val_x[0])
# 第二步:将解码器输入和真实状态传入推理模型
predictions = inf_model.predict([val_x[1]] + list(real_enc_states))

额外优化建议

  • 针对TensorFlow的格式警告:可以将训练数据转换为tf.data.Dataset格式提升性能,示例代码:
import tensorflow as tf
# 假设train_enc是编码器训练数据,train_dec是解码器训练数据,train_y是标签
train_dataset = tf.data.Dataset.from_tensor_slices(([train_enc, train_dec], train_y)).batch(32)
model.fit(train_dataset, epochs=10)
  • 输入形状校验:确保推理时val_x[1]的形状(14284,24,6)与模型定义的decoder_inputs形状(n_past, n_feat2)完全匹配(即n_past=24,n_feat2=6)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:42:24