MNIST分类代码Epoch1后终止并报形状不兼容等错误,求排查
Keras MNIST手写数字分类报错解决
一、标签形状不兼容(程序终止核心原因)
模型输出维度为(None,10)(对应0-9共10类数字),但你的标签形状是(None,15),两者维度不匹配导致训练中断。修复步骤:
- 检查标签预处理逻辑:你大概率在做独热编码时错误指定了类别数,或者误将标签处理成了多标签格式。
- 正确的MNIST标签处理代码:
from tensorflow.keras.utils import to_categorical # 对训练/测试标签做独热编码,明确指定10类 y_train = to_categorical(y_train, num_classes=10) y_test = to_categorical(y_test, num_classes=10) - 排查数据加载环节:确认没有混入其他数据集,或误修改了原始MNIST标签的取值范围。
二、cudnn库加载失败(性能影响,非终止原因)
这个提示仅表示无法启用GPU加速,程序会自动切换到CPU运行,不会导致终止,但训练速度会变慢。修复建议:
- 核对TensorFlow/Keras版本与CUDA、cudnn版本的兼容性(比如TensorFlow 2.8对应CUDA 11.2、cudnn 8.1)。
- 确认
cudnn64_8.dll存在于CUDA安装目录的bin文件夹中,且该路径已添加到系统PATH环境变量。 - 若无需GPU加速,可直接忽略该提示。
额外验证项
- 确认模型最后一层配置正确:必须是
Dense(10, activation='softmax'),对应10类分类任务。 - 损失函数与标签格式匹配:使用独热编码标签时用
categorical_crossentropy,使用整数标签时用sparse_categorical_crossentropy。
内容的提问来源于stack exchange,提问作者Saucter
相关产品推荐
相关产品推荐

