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

ResNet-50迁移学习训练报错:维度不匹配问题求助

问题解决:ResNet-50微调时维度不匹配错误

错误原因

你的错误源于评估指标与损失函数不匹配:

  • 你使用的SparseCategoricalCrossentropy损失函数,针对的是整数型标签(形状为[batch_size],比如你的标签是(32,)),它会自动将整数标签与模型输出的[batch_size, n_classes]形状的softmax结果计算损失。
  • 但你在metrics里用了tf.keras.metrics.Accuracy,这个指标默认要求预测值和标签的维度完全一致:它会直接比较[32,27]的预测输出和[32]的标签,自然会出现维度不匹配的错误。

解决方案

将metrics中的Accuracy替换为SparseCategoricalAccuracy,这个指标专门适配整数标签与多分类输出的匹配场景:

修改后的模型编译代码:

base_learning_rate = 0.001
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=base_learning_rate),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(),
              metrics=[tf.keras.metrics.SparseCategoricalAccuracy(name='accuracy')])

额外检查点

  • 确认n_classes的值是否等于数据集的实际类别数(错误信息中模型输出是[32,27],说明你设置的n_classes=27,请确保这与WikiArt数据集的风格类别数量一致)。
  • 数据集的标签确实是整数类型(从你的element_spec看标签是tf.int64,符合SparseCategoricalCrossentropy的要求,这部分没问题)。

内容的提问来源于stack exchange,提问作者Bernardino Sassoli de' Bianchi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:42:17