TensorFlow训练Graph execution error求助:logits与labels维度不匹配
问题解决:Keras训练时logits与labels形状不匹配错误
错误根源
报错logits_size=[16,5] labels_size=[16,11]明确说明:模型最后一层输出的类别数(5)和数据集实际的类别数(11)不匹配,导致损失计算时两者无法进行广播运算,直接终止训练。
解决步骤
- 确认数据集类别数:从labels的形状
[16,11]可验证,你的数据集实际包含11个类别,需确保数据加载逻辑未错误过滤类别。 - 修改模型输出层:找到模型定义的最后一层
Dense层,将units参数从5改为11。示例:
原代码若为:
修改为:model.add(Dense(5, activation='softmax'))model.add(Dense(11, activation='softmax')) - 匹配损失函数与标签格式:如果标签是one-hot编码(形状
[batch_size,11]),损失函数使用CategoricalCrossentropy;如果是整数标签(形状[batch_size]),则使用SparseCategoricalCrossentropy,确保两者对应。 - 验证模型结构:修改后运行
model.summary(),确认最后一层输出维度为(None, 11),与标签形状匹配。
内容的提问来源于stack exchange,提问作者Kenean Nooks
相关产品推荐
相关产品推荐

