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

Keras多输入模型.fit()正常但.evaluate()出现数据基数不匹配错误

问题原因与解决方案

错误根源

报错提示的数据基数不匹配,核心问题是输入的两个张量样本数不一致:

  • x_train 形状为 (60, 577, 1),样本数是60
  • dummy_mask 形状为 (577, 577, 1),样本数是577
  • 模型要求所有输入的样本数必须和标签y_train的样本数(60)完全一致,evaluate方法会严格校验这一点,而fit可能因广播规则宽松暂时没触发错误。

同时,你的mask_input定义的形状是(sequence_size, sequence_size),但传入的dummy_mask多了一个最后维度(...,1),这也是冗余的。

解决方案

1. 调整掩码形状,匹配样本数

如果所有样本共用同一个(577,577)的掩码,需要将掩码扩展为和x_train相同的样本数:

import numpy as np

# 先去掉掩码多余的最后一维,变成(577,577)
dummy_mask = dummy_mask.squeeze(axis=-1)
# 扩展样本维度,重复60次,得到(60,577,577)
dummy_mask = np.repeat(dummy_mask[np.newaxis, ...], repeats=60, axis=0)

2. 验证模型输入形状匹配

确认模型中mask_input的定义和输入数据一致:
模型里mask_input = keras.Input(shape=(sequence_size, sequence_size), name="mask_input"),要求每个样本的掩码是(sequence_size, sequence_size),所以最终传入的掩码张量必须是(样本数, sequence_size, sequence_size),不能带额外的通道维度。

处理后再调用model.evaluate([x_train, dummy_mask], y_train)即可解决报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:25:12