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

如何修复Logits and Labels must have the same shape报错

报错根本原因

你当前的模型架构和数据处理存在两个核心不匹配的问题:

  • 输入的单张图像是560*560的二维矩阵,你直接堆叠全连接(Dense)层时,全连接层默认仅对最后一个维度做计算,输出会保留560这个维度,最终输出形状为(样本数, 560, 2),和标签的(样本数, 1, 1)形状完全不符
  • 你需要的是整图二分类,而当前模型输出的是像素级的二分类结果,和任务目标不匹配

修复步骤

步骤1:调整模型架构

如果你坚持用全连接层做分类,需要先把单张图像的二维矩阵展平为一维向量,同时调整输出层适配二分类任务:

from tensorflow.keras.layers import Flatten # 没有导入Flatten的话先加这行

model = Sequential(
[
    # 新增展平层,把每张图的(560,560)矩阵转为一维向量
    Flatten(input_shape=(560,560)),
    Dense(750, activation='relu'),
    Dropout(0.2),
    Dense(750, activation='relu'),
    Dropout(0.2),
    # 二分类任务输出1个神经元即可,用sigmoid激活
    Dense(1, activation='sigmoid')
]
)

如果要提升图像分类效果,更推荐把前两层全连接替换为卷积+池化的组合,避免全连接层参数过多导致严重过拟合。

步骤2:调整标签形状

把标签多余的维度压缩,适配输出层形状:

# 去掉最后两个长度为1的维度,处理后datay形状为(样本数,)
datay = np.squeeze(datay)

步骤3:优化训练参数

你当前的损失函数binary_crossentropy和二分类+sigmoid的配置是匹配的,不用修改,建议把初始学习率0.1调小到1e-4~1e-3区间,避免模型不收敛。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:45:06