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

Keras使用fit_generator训练时model_5期望2输入却收3张量错误如何解决

错误原因

你的图像字幕生成模型为双输入结构(常规设计为图像特征输入+已生成文本序列输入),仅需要接收2个输入张量,但你的data_generator返回了3个独立张量,Keras会默认将生成器返回的所有张量识别为模型输入,因此触发输入数量不匹配的报错,多出的1个张量实际是训练用的目标标签。

修复方案

调整data_generator的返回格式,将两个输入张量打包为列表,与目标标签组成二元组返回即可,参考修改后的生成器核心逻辑:

def data_generator(train_descriptions, train_features, tokenizer, max_length):
    # 你原有数据处理逻辑保持不变
    while 1:
        # 生成单批次的三个张量
        batch_img_feature = 批次图像特征张量 # 模型第一个输入
        batch_seq = 批次文本序列张量 # 模型第二个输入
        batch_target = 批次下一词标签张量 # 训练目标
        # 错误写法:直接返回三个张量 return batch_img_feature, batch_seq, batch_target
        # 正确写法:打包为 (输入列表, 目标) 的二元组
        yield [batch_img_feature, batch_seq], batch_target

修改生成器后无需调整你现有训练循环的代码,重新运行训练即可正常执行。

可选优化

如果你使用的是TensorFlow 2.x版本,fit_generator已被官方弃用,你可以直接调用model.fit()传入生成器,参数保持一致即可正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:39:03