Copy攻城獅日志】“一分鐘”跑通MindSpore的LeNet模型

      網友投稿 794 2022-05-29

      前言:此文為r0.7-beta的操作實踐,為什么我的眼里常含淚水,因為我對踩坑這件事愛得深沉。謹以此文獻給和我一樣踩坑的小伙伴,紀念踩坑時刻。

      ↑開局一張圖,故事全靠編。

      有時候常常問自己:我一個前端開發,沒有python基礎,居然敢嘗試使用深度學習框架?誰給的勇氣,是梁靜茹嗎?有時候也常常暗示自己“技多不壓身”,活得像周樹人筆下的阿Q一樣灑脫,不過現實就像--我是鉆井工,鉆了一個又一個的井,因為沒有堅持,一次又一次地和寶藏擦肩而過最終空手而歸;有時候也常常告慰自己:“Just DO IT”,IT這么吃香,不干IT還能干啥?不就是換個地兒搬磚嗎?定個小目標,先跑通MindSpore的LeNet模型!

      安裝

      優秀的全場景深度學習框架開源項目,應該提供Docker安裝鏡像;先康康我的運行環境:

      Ubuntu 18.04.5 LTS

      Docker version 18.09.6

      這次安裝的是CPU版本的,命令:

      docker pull mindspore/mindspore-cpu:0.7.0-betadocker run -it mindspore/mindspore-cpu:0.7.0-beta /bin/bash

      一步到“胃”,直接進入到home目錄,接下來Copy攻城獅要開始表演粗劣的Copy***,跑通MindSpore的LeNet模型。

      【Copy攻城獅日志】“一分鐘”跑通MindSpore的LeNet模型

      Fork代碼

      為啥要Fork代碼呢?您指望一個毫無核心技術的Copy攻城獅手寫一個深度學習框架MindSpore?代碼千千萬,Fork第一條!不啰嗦,先fork一下MindSpore官方倉庫,一鍵擁有深度學習框架。當然Fork之后,我們要將代碼clone到本地,因為我的碼云賬號叫hu-qi,所以我要clone的路徑是https://gitee.com/hu-qi/mindspore。

      git clone https://gitee.com/hu-qi/mindspore

      因為碼云是咱自己的,速度倍兒棒,稍等片刻,美味即將呈現。

      翻車現場

      ModuleNotFoundError: No module named 'mindspore.dataset.vision'.

      習慣了瞎折騰,以為直接運行train.py就能一分鐘跑通,還是“too young,too simple”。一波錯誤的示范,然后就是圖中巨大的坑:

      幸好前人已經踩過坑了:Windows系統下跑通華為MindSpore的Lenet網絡,盡管是Windows系統的,看上去似乎是相同的問題。為了記錄本次踩坑歷程,我決定施展一下git技能!

      checkout踩坑分支

      為了印象更加深刻,我決定將分支命名為9-12,以此紀念"9·12踩坑事件"。

      cd /home/mindspore git checkout -b 9-12

      然后參照前人的經驗教訓開始修改本地文件。

      修改文件

      本次修改的是兩個文件--lenet/train.py和lenet/src/dataset.py。

      lenet/src/dataset.py

      # …… # line 20新增層級transforms import mindspore.dataset.transforms.vision.c_transforms as CV # line 22新增層級transforms from mindspore.dataset.transforms.vision import Int # ……

      lenet/train.py

      # …… # 注釋line 32和line34 # from mindspore.common import set_seed # set_seed(1) # line 55新增設置is_grad=false net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction="mean", is_grad=False) # ……

      在lenet目錄滿懷信心的執行命令:python train.py --device_target=CPU --dataset_sink_mode=False,結果又是一個錯誤:ValueError: The folder ./Data/train does not exist or permission denied!。

      一開始以為是權限的問題,經過一些嘗試,發現是沒有Data目錄。那就在lenet下新建一個Data目錄以及子目錄test和train吧。

      cd /home/mindspore/model_zoo/official/cv/lenet mkdir Data mkdir Data/test && mkdir Data/train

      然后依舊滿懷信心敲下執行訓練的命令: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.。怎么辦?意識到腳本并沒有給我自動下載Mnist數據集,又不懂代碼,只好手動去下載了。

      下載Mnist數據集

      Mnist數據集:?http://yann.lecun.com/exdb/mnist/

      數據目錄結構:

      └─Data ├─test │ t10k-images.idx3-ubyte │ t10k-labels.idx1-ubyte │ └─train train-images.idx3-ubyte train-labels.idx1-ubyte

      既然是linux,二話不說,先來四個wget!

      # 切換到Data目錄 cd Data # 下載訓練圖片 wget # 下載訓練標簽 wget #下載測試圖片 wget # 下載測試標簽 wget http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz

      然后又是一波解壓操作,來四個gunzip:

      gunzip train-images-idx3-ubyte.gz gunzip train-labels-idx1-ubyte.gz gunzip t10k-images-idx3-ubyte.gz gunzip t10k-labels-idx1-ubyte.gz

      最后,再來一波移動文件操作壓壓驚。來四個mv:

      mv train-images-idx3-ubyte ./train mv train-labels-idx1-ubyte ./train mv t10k-images-idx3-ubyte ./test/ mv t10k-labels-idx1-ubyte ./test/

      此時此刻,感受到不懂代碼真吃虧,明明幾行代碼就解決了,我要這么多套“切克鬧”才能獲取到數據集,我一定向明明學習,爭取早日擺脫Copy攻城獅的稱號,實現代碼自由,贏取開源碩果,走向擼碼巔峰!咳咳,再來一盤花生米,我還能嘮嗑!

      訓練及驗證

      新司機再次上路,這回我總能愉快的訓練了吧?

      cd /home/mindspore/model_zoo/official/cv/lenet python train.py --device_target=CPU --dataset_sink_mode=False

      然后終于看到了勝利的曙光,跑起來了!跑起來了!跑起來了! 看到一行行日志不斷涌現,我的眼眶噙滿了淚水--“小胡,你在干啥?你丫一前端上班在跑模型,不想干了嗎?明天去財務領錢……” 還好隔壁王哥及時解圍--“他這是在深度學習,以后不會再把1像素切成2像素了”

      接下還需要驗證一下:

      cd /home/mindspore/model_zoo/official/cv/lenet python eval.py --ckpt_path="ckpt/checkpoint_lenet-10_1875.ckpt" --device_target=CPU

      運行結果:

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

      勉強能接受吧,畢竟只整了10個epoch。

      上傳到遠程倉庫

      盡管我們已經跑通了MindSpore的LeNet,不過我還是希望能把踩的這些坑記錄下來,最后再使用一下git技能:

      # 切換到本地倉庫目錄 cd /home/mindspore # 設置git git config --global user.email "huqi1008301@163.com" git config --global user.name "hu-qi" # 查看本地分支,確保我的9-12還在 git branch # 查看有哪些改變 git status # 新增改變 git add . # 提交改變到緩存倉庫 git commit -m 'finish LeNet' # 推送分支到遠程(按照提示登錄) git push origin 9-12

      一頓操作猛如虎,一看代碼原地杵,當然要切換到9-12這個分支才有的啦。

      結語

      所謂“一分鐘”的體驗,大概花了一個小時踩坑了,然后大概花了三個小時來記錄。不足之處,期待各位大佬多多指教!

      Git Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:漫談:基于云服務的運維模式初探(云計算漫談之二)
      下一篇:JAVA開發常用Maven軟件管理工具【奔跑吧!JAVA】
      相關文章
      色偷偷亚洲第一综合网| 亚洲成年网站在线观看| 欧美激情综合亚洲一二区| 亚洲入口无毒网址你懂的| 亚洲欧洲精品视频在线观看| 亚洲国产成人精品不卡青青草原| 国产亚洲视频在线播放| 亚洲精品无码久久久| 亚洲国产日韩成人综合天堂| 亚洲第一成人影院| 亚洲欧洲日产国码一级毛片| 亚洲黄片毛片在线观看| 在线日韩日本国产亚洲| 亚洲色偷偷偷鲁综合| 亚洲啪啪AV无码片| 亚洲国产精品一区二区第一页| 亚洲成AV人片在线播放无码| 亚洲成色在线综合网站| 国产成人精品日本亚洲网站| 亚洲AV无码久久精品成人| 亚洲日韩区在线电影| 亚洲第一区视频在线观看| 亚洲美女视频网址| 亚洲AV无码乱码麻豆精品国产| 亚洲一区精彩视频| 亚洲国产欧美国产综合一区 | 亚洲综合色婷婷在线观看| 亚洲一区二区三区成人网站 | 亚洲女初尝黑人巨高清| 亚洲av无码不卡一区二区三区| 亚洲精品人成在线观看| 亚洲字幕在线观看| 国产亚洲sss在线播放| 亚洲综合小说另类图片动图| 国产精品亚洲专区无码WEB| 亚洲精品网站在线观看不卡无广告| 亚洲一区二区三区AV无码| 亚洲AV人人澡人人爽人人夜夜| 亚洲精品不卡视频| 亚洲中文无码永久免费| 国产成人综合久久精品亚洲|