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

TensorFlow/Keras多输入模型验证数据输入报错求助

多输入Keras模型验证数据传入问题解决

你的问题核心是验证数据格式未与训练输入对齐:模型定义了3个输入,但验证阶段传入的是单一数据对象,导致输入数量不匹配。

1. 拆分测试集的输入与标签

从test_dataset中分离出对应训练用的三个输入特征和验证标签。假设test_dataset前3列对应Name-1、Name-2、Name-3,剩余列是验证标签(根据你的实际数据结构调整索引):

# 提取三个验证输入,确保形状与训练输入一致
val_name1 = test_dataset[:, 0].reshape(-1, 1)  # 转换为(8,1),匹配训练时的(32,1)
val_name2 = test_dataset[:, 1].reshape(-1, 1)
val_name3 = test_dataset[:, 2].reshape(-1, 1)

# 提取验证标签
val_y = test_dataset[:, 3:]

2. 按训练输入格式传入验证数据

调用fit时,validation_data要传入和训练输入完全相同的结构——包含3个输入张量的列表,搭配对应标签:

model.fit(
    [X_input['Name-1'], X_input['Name-2'], X_input['Name-3']],
    y_output,
    validation_data=([val_name1, val_name2, val_name3], val_y),
    epochs=你的训练轮数,
    batch_size=你的批次大小
)

若使用tf.data.Dataset格式的验证集

如果测试集是tf.data.Dataset类型,需打包成多输入数据集结构:

val_dataset = tf.data.Dataset.from_tensor_slices(
    (
        [val_name1, val_name2, val_name3],  # 也可使用字典匹配输入层名称:{'Name-1': val_name1, ...}
        val_y
    )
).batch(你的批次大小)

# 传入fit函数
model.fit(
    [X_input['Name-1'], X_input['Name-2'], X_input['Name-3']],
    y_output,
    validation_data=val_dataset,
    ...
)

额外注意

  • 必须保证每个验证输入的形状、数据类型与对应训练输入完全一致,比如训练时X_input['Name-1']是float32的(32,1),验证输入也需是同类型同形状的(8,1)。
  • 移除验证数据后RMSE恒定,大概率是模型未学到有效特征,解决验证数据问题后,可结合贝叶斯层参数设置进一步排查模型拟合问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:52:16