问题描述
目前使用mindcv中的InceptionV3模型在MINIST数据集上训练(直接将MINIST数据集resize为299*299),结果发现如果在model.set_train(True)的情况下进行评估可以轻松达到98%+的准确率,但是如果是model.set_train(False)的情况下评估,准确率只有10%左右(约等于瞎猜)。
我猜测应该是BN层的问题,但是我不太清楚这个应该怎么处理?如果直接在model.set_train(True)模式下进行评估的话,这个结果可能不太可靠,可能会与batch_size有关,但是model.set_train(False)下的结果又是完全不可接受的。
启智平台,启算调试环境 镜像:mindspore2.0.0rc1_cann_6.3.rc1.alpha001_notebook
额外安装了 mindcv 0.3版本
解答
inceptionv3在mindcv是根据imagenet数据集进行调参的,更换数据集也需要相应调整参数,MNIST有官方的教程可以参考:https://www.mindspore.cn/tutorials/zh-CN/r2.2/beginner/quick_start.html
set_train 在eval期间必须保持False计算结果才是正确的
更多调参攻略可以参考官网指南:https://www.mindspore.cn/docs/zh-CN/r2.2/migration_guide/debug_and_tune.html