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

TensorFlow多输入模型训练报错:数据基数模糊问题解决

解决双输入文本分类模型的Data cardinality报错问题

报错核心原因

这个报错本质是输入数组的形状与模型定义的输入形状不兼容。模型中text_input和subject_input的shape都定义为(1,),但如果你的x_train_text或x_train_subject是一维数组(形状为(4499,)),Keras会误判其样本数,导致和标签的4499个样本不匹配。

具体修复步骤

1. 调整输入数据的形状

将一维的输入数组转为二维(形状为(4499, 1)),匹配模型输入层的要求:

import numpy as np

# 给文本输入增加维度
x_train_text = np.expand_dims(x_train_text, axis=1)
# 给subject输入增加维度
x_train_subject = np.expand_dims(x_train_subject, axis=1)

2. 验证输入形状

调整后打印形状确认是否符合要求:

print(x_train_text.shape)  # 预期输出:(4499, 1)
print(x_train_subject.shape)  # 预期输出:(4499, 1)
print(y_train_int.shape)  # 预期输出:(4499,) 或 (4499, 1)

3. 可选:用字典形式传递输入

如果调整形状后仍有问题,可改用字典明确对应模型的输入层:

history = model.fit(
    {
        "input_1": x_train_text,  # 名称可从model.summary()的输入层查看
        "input_2": x_train_subject
    },
    y=y_train_int,
    epochs=epochs
)

也可以在定义输入层时指定自定义名称,比如text_input = tf.keras.Input(shape=(1,), dtype=tf.string, name="text_input"),后续字典key就用"text_input"。

额外检查项

  • 确认vectorize_layer已通过adapt方法适配过训练数据格式,避免向量化时出错。
  • 确认CategoryEncoding的num_tokens参数值等于subject的类别总数,防止后续拼接维度不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:20:22