Window10 上MindSpore(CPU)用LeNet網絡訓練MNIST


本文是在windows10上安裝了CPU版本的Mindspore,並在mindspore的master分支基礎上使用LeNet網絡訓練MNIST數據集,實踐已訓練成功,此文為記錄過程中的出現問題;
(據說此時mindspore的r0.7版本上是直接執行成功的)

【1】首先使用conda activate mindspore 進入mindspore虛擬環境

【2】再切入mindspore中lenet網絡的train.py所在目錄 D:\gitee\mindspore\model_zoo\official\cv\lenet

mindspore的lenet網絡訓練文件所在位置

【3】執行訓練 python train.py --device-target=CPU (因為代碼里默認使用的訓練設備為Ascend,需要手動設置 --device_targetCPU

  • 問題一 No module named 'mindspore.dataset.vision’

No module named mindspore.dataset.vision

報錯:文件 D:\gitee\mindspore\model_zoo\official\cv\lenet\src\dataset.py 引入模塊import mindspore.dataset.version.c_transforms as CV 錯誤;

原因:查看發現系統 miniconda3的mindspore環境中 在\dataset 和 \version文件夾中還有一層 \transforms

dataset和version中還有一層transform層
解決:修改dataset.py 文件中模塊引用的位置;

import mindspore.dataset.transforms.vision.c_transforms as CV
from mindspore.dataset.transforms.vision import Inter

  

保存文件重新執行命令 python train.py --device-target=CPU

  • 問題二 ImportError: cannot import name ‘set_seed’ from 'mindspore.common’

ImportError: cannot import name set_seed from mindspore.common
報錯:文件train.py中導入set_seed模塊出錯

原因: C:\Users\86183\miniconda3\envs\mindspore\Lib\site-packages\mindspore\common\__init__.py 文件中沒有set_seed模塊(也即common文件下沒有set_seed.py文件)

解決:在train.py 中將以下兩條語句注釋掉

from mindspore.common import set_seed

set_seed(1)

  

保存文件重新執行命令 python train.py --device-target=CPU

  • 問題三 ValueError: The folder ./Data\train does not exist or permission denied!

ValueError: The folder ./Data\train does not exist or permission denied!

原因:/Data/train 文件不存在

解決:在D:\gitee\mindspore\model_zoo\official\cv\lenet\ 下新建Data目錄,並在Data目錄下新建train和test文件夾

缺少Data目錄

重新執行命令 python train.py --device-target=CPU

  • 問題四 RuntimeError: Currently dateset sink mode is not supported when the device target is CPU

RuntimeError: Currently dateset sink mode is not supported when the device target is CPU
原因:數據下沉模式是針對asic芯片做的優化 默認是開啟的,CPU不支持這種模式

解決:改為執行命令 python train.py --device_target=CPU --dataset_sink_mode=False

  • 問題五: Unexpected error. There is no valid data matching the dataset API MnistDataset.Please check file path or dataset API validation first.

Unexpected error. There is no valid data matching the dataset API MnistDataset.Please check file path or dataset API validation first.

原因:腳本沒有自動下載MNIST數據集,需要自己手動下載

解決:手動下載MNIST數據集MNIST數據集下載地址

MNIST數據目錄結構:
MNIST數據集目錄結構
t10k-labels-idx1-ubyte.gzt10k-images-idx3-ubyte.gz 解壓到 問題三新建的Data/test 目錄下
train-labels-idx1-ubyte.gztrain-images-idx3-ubyte.gz 解壓到 問題三新建的Data/test 目錄下

MNIST的test數據集
MNIST的train數據集

重新執行python train.py --device_target=CPU --dataset_sink_mode=False

  • 問題六 InferImplBiasAddGrad] BiasAddGrad input y backprop, dim should >= 2, while 1.

 InferImplBiasAddGrad BiasAddGrad input y backprop, dim should 2, while 1.

解決:在train.py中添加語句 is_grad=False, 變成下面這樣

net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction="mean",is_grad=False)

 

再度執行命令 python train.py --device_target=CPU --dataset_sink_mode=False , 訓練成功;

訓練10個epoch

【4】驗證准確率: python eval.py --ckpt_path="ckpt/checkpoint_lenet-10_1875.ckpt" --device_target=CPU

============== Starting Testing ==============
============== {'Accuracy': 0.9844751602564102} ==============

  

驗證准確性

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM