Python深度学习模型调用fit命令触发ValueError报错的原因是什么?
问题根因
你触发的是分类损失计算时的维度不匹配错误:使用categorical_crossentropy作为损失函数时,要求标签的独热编码最后一维维度,必须和模型最后一层的输出维度完全一致。从报错信息可以看到,你当前的训练标签one_hot_train最后一维是7,模型输出最后一维是2,两者维度不匹配导致损失计算失败。
解决方法
- 对齐分类维度:如果你的任务是7分类,修改模型最后一层全连接层的单元数为7,激活函数设置为softmax,示例代码:
model.add(Dense(7, activation='softmax'));如果你的任务是2分类,修正训练标签的独热编码为2维,或切换损失为binary_crossentropy、最后一层激活改为sigmoid。 - 修正验证集拆分逻辑:你当前总样本量仅7条,设置
validation_split=0.2会要求拆分出非整数的样本数作为验证集,属于无效配置,要么直接移除该参数关闭验证集拆分,要么补充足量训练样本后再设置验证拆分比例。 - 修复完成后可分别打印
one_hot_train.shape和model.output_shape,确认两者最后一维数值一致后再启动训练。
内容的提问来源于stack exchange,提问作者Mustafa Koca
相关产品推荐
相关产品推荐

