Mindspore 1.0初體驗

      網友投稿 589 2025-04-05

      一、前言


      2020年3月28日,MindSpore正式開源,備受廣大開發者的關注。從4月30日發布的v0.2.0-alpha版本,到8月30日發布的v0.7.0-beta版本,推出了數十個亮眼的新特性,9月,在華為全聯接大會上,MindSpore正式發布v1.0.0版本。

      有關Mindspore 1.0更多的介紹可以看這一篇文章:https://www.mindspore.cn/news/newschildren?id=262

      二、Mindspore 1.0安裝

      Mindspore安裝教程參考文檔:https://www.mindspore.cn/install

      這邊有個小建議:國內通過pip install 安裝的用戶可以在教程頁面給出的安裝命令的最后加上 -i https://mirrors.huaweicloud.com/repository/pypi/simple?命令使用國內源。因為在安裝mindspore的時候會安裝一些依賴包,這些依賴包沒制定過安裝源的話他會從國外的默認地址下載,那樣的話在國內下載可能比較慢。所有建議加上-i 指定一下國內源。

      如果想要使用docker安裝的話可以參考這個文檔:https://gitee.com/mindspore/mindspore?中的Docer鏡像部分安裝。

      安裝環境

      硬件環境:

      CPU:Intel i7-4712MQ

      內存:8G

      顯卡:Nvidia GeForce 840M

      軟件環境:

      操作系統:WIN10 2004

      Python:Python 3.7.7

      根據官方安裝教程安裝完畢后,在命令提示符輸入python,然后輸入代碼,執行結果顯示1.0.0說明Mindspore 1.0.0安裝成功了。

      import?mindspore?as?ms ms.__version__

      三、使用Lenet+Mnist初體驗

      1.Lenet介紹

      LeNet-5是一個較簡單的卷積神經網絡。下圖顯示了其結構:輸入的二維圖像,先經過兩次卷積層到池化層,再經過全連接層,最后使用softmax分類作為輸出層。

      LeNet-5 這個網絡雖然很小,但是它包含了深度學習的基本模塊:卷積層,池化層,全連接層。是其他深度學習模型的基礎, 這里我們對LeNet-5進行深入分析。同時,通過實例分析,加深對與卷積層和池化層的理解。

      2.MNIST數據集介紹

      MNIST 數據集已經是一個被”嚼爛”了的數據集, 很多教程都會對它”下手”, 幾乎成為一個 “典范”. 不過有些人可能對它還不是很了解, 下面來介紹一下.

      MNIST 數據集可在http://yann.lecun.com/exdb/mnist/獲取, 它包含了四個部分:

      Mindspore 1.0初體驗

      訓練集:

      Training set images: train-images-idx3-ubyte.gz (9.9 MB, 解壓后 47 MB, 包含 60,000 個樣本)

      Training set labels: train-labels-idx1-ubyte.gz (29 KB, 解壓后 60 KB, 包含 60,000 個標簽)

      測試集

      Test set images: t10k-images-idx3-ubyte.gz (1.6 MB, 解壓后 7.8 MB, 包含 10,000 個樣本)

      Test set labels: t10k-labels-idx1-ubyte.gz (5KB, 解壓后 10 KB, 包含 10,000 個標簽)

      MNIST 數據集來自美國國家標準與技術研究所, National Institute of Standards and Technology (NIST). 訓練集 (training set) 由來自 250 個不同人手寫的數字構成, 其中 50% 是高中學生, 50% 來自人口普查局 (the Census Bureau) 的工作人員. 測試集(test set) 也是同樣比例的手寫數字數據.

      3.Lenet+MNIST代碼

      程序運行代碼可以參考Mindspore官方代碼倉:https://gitee.com/mindspore/mindspore/tree/r1.0/model_zoo/official/cv/lenet

      第一步:將代碼下載下來拷貝到本地,代碼的文件夾結構如下

      lenet

      |___src

      |? ? ? ?|__config.py

      |? ? ? ?|__dataset.py

      |? ? ? ?|__lenet.py

      |

      |___MNIST_DATA

      |? ? ? ?|______train(MNIST下載后的訓練集解壓到這個目錄

      |? ? ? ?|______test(MNIST下載后的驗證集解壓到這個目錄

      |

      |____train.py? ?訓練代碼

      |____eval.py? ? 測試代碼

      train.py的代碼:

      #?Copyright?2020?Huawei?Technologies?Co.,?Ltd # #?Licensed?under?the?Apache?License,?Version?2.0?(the?"License"); #?you?may?not?use?this?file?except?in?compliance?with?the?License. #?You?may?obtain?a?copy?of?the?License?at # #?http://www.apache.org/licenses/LICENSE-2.0 # #?Unless?required?by?applicable?law?or?agreed?to?in?writing,?software #?distributed?under?the?License?is?distributed?on?an?"AS?IS"?BASIS, #?WITHOUT?WARRANTIES?OR?CONDITIONS?OF?ANY?KIND,?either?express?or?implied. #?See?the?License?for?the?specific?language?governing?permissions?and #?limitations?under?the?License. #?============================================================================ """ ########################?train?lenet?example?######################## train?lenet?and?get?network?model?files(.ckpt)?: python?train.py?--data_path?/YourDataPath """ import?os import?ast import?argparse from?src.config?import?mnist_cfg?as?cfg from?src.dataset?import?create_dataset from?src.lenet?import?LeNet5 import?mindspore.nn?as?nn from?mindspore?import?context from?mindspore.train.callback?import?ModelCheckpoint,?CheckpointConfig,?LossMonitor,?TimeMonitor from?mindspore.train?import?Model from?mindspore.nn.metrics?import?Accuracy from?mindspore.common?import?set_seed set_seed(1) if?__name__?==?"__main__": ????parser?=?argparse.ArgumentParser(description='MindSpore?Lenet?Example') ????parser.add_argument('--device_target',?type=str,?default="CPU",?choices=['Ascend',?'GPU',?'CPU'], ????????????????????????help='device?where?the?code?will?be?implemented?(default:?Ascend)') ????parser.add_argument('--data_path',?type=str,?default="./Data", ????????????????????????help='path?where?the?dataset?is?saved') ????parser.add_argument('--ckpt_path',?type=str,?default="./ckpt",?help='if?is?test,?must?provide\ ????????????????????????path?where?the?trained?ckpt?file') ????parser.add_argument('--dataset_sink_mode',?type=ast.literal_eval,?default=True, ????????????????????????help='dataset_sink_mode?is?False?or?True') ????args?=?parser.parse_args() ????context.set_context(mode=context.GRAPH_MODE,?device_target=args.device_target) ????ds_train?=?create_dataset(os.path.join(args.data_path,?"train"), ??????????????????????????????cfg.batch_size) ????network?=?LeNet5(cfg.num_classes) ????net_loss?=?nn.SoftmaxCrossEntropyWithLogits(sparse=True,?reduction="mean") ????net_opt?=?nn.Momentum(network.trainable_params(),?cfg.lr,?cfg.momentum) ????time_cb?=?TimeMonitor(data_size=ds_train.get_dataset_size()) ????config_ck?=?CheckpointConfig(save_checkpoint_steps=cfg.save_checkpoint_steps, ?????????????????????????????????keep_checkpoint_max=cfg.keep_checkpoint_max) ????ckpoint_cb?=?ModelCheckpoint(prefix="checkpoint_lenet",?directory=args.ckpt_path,?config=config_ck) ????model?=?Model(network,?net_loss,?net_opt,?metrics={"Accuracy":?Accuracy()}) ????print("==============?Starting?Training?==============") ????model.train(cfg['epoch_size'],?ds_train,?callbacks=[time_cb,?ckpoint_cb,?LossMonitor()], ????????????????dataset_sink_mode=args.dataset_sink_mode)

      eval.py的代碼:

      #?Copyright?2020?Huawei?Technologies?Co.,?Ltd # #?Licensed?under?the?Apache?License,?Version?2.0?(the?"License"); #?you?may?not?use?this?file?except?in?compliance?with?the?License. #?You?may?obtain?a?copy?of?the?License?at # #?http://www.apache.org/licenses/LICENSE-2.0 # #?Unless?required?by?applicable?law?or?agreed?to?in?writing,?software #?distributed?under?the?License?is?distributed?on?an?"AS?IS"?BASIS, #?WITHOUT?WARRANTIES?OR?CONDITIONS?OF?ANY?KIND,?either?express?or?implied. #?See?the?License?for?the?specific?language?governing?permissions?and #?limitations?under?the?License. #?============================================================================ """ ########################?eval?lenet?example?######################## eval?lenet?according?to?model?file: python?eval.py?--data_path?/YourDataPath?--ckpt_path?Your.ckpt """ import?os import?ast import?argparse import?mindspore.nn?as?nn from?mindspore?import?context from?mindspore.train.serialization?import?load_checkpoint,?load_param_into_net from?mindspore.train?import?Model from?mindspore.nn.metrics?import?Accuracy from?src.dataset?import?create_dataset from?src.config?import?mnist_cfg?as?cfg from?src.lenet?import?LeNet5 if?__name__?==?"__main__": ????parser?=?argparse.ArgumentParser(description='MindSpore?Lenet?Example') ????parser.add_argument('--device_target',?type=str,?default="CPU",?choices=['Ascend',?'GPU',?'CPU'], ????????????????????????help='device?where?the?code?will?be?implemented?(default:?Ascend)') ????parser.add_argument('--data_path',?type=str,?default="./MNIST_Data", ????????????????????????help='path?where?the?dataset?is?saved') ????parser.add_argument('--ckpt_path',?type=str,?default="",?help='if?mode?is?test,?must?provide\ ????????????????????????path?where?the?trained?ckpt?file') ????parser.add_argument('--dataset_sink_mode',?type=ast.literal_eval, ????????????????????????default=False,?help='dataset_sink_mode?is?False?or?True') ????args?=?parser.parse_args() ????context.set_context(mode=context.GRAPH_MODE,?device_target=args.device_target) ????network?=?LeNet5(cfg.num_classes) ????net_loss?=?nn.SoftmaxCrossEntropyWithLogits(sparse=True,?reduction="mean") ????repeat_size?=?cfg.epoch_size ????net_opt?=?nn.Momentum(network.trainable_params(),?cfg.lr,?cfg.momentum) ????model?=?Model(network,?net_loss,?net_opt,?metrics={"Accuracy":?Accuracy()}) ????print("==============?Starting?Testing?==============") ????param_dict?=?load_checkpoint(args.ckpt_path) ????load_param_into_net(network,?param_dict) ????ds_eval?=?create_dataset(os.path.join(args.data_path,?"test"), ?????????????????????????????cfg.batch_size, ?????????????????????????????1) ????acc?=?model.eval(ds_eval,?dataset_sink_mode=args.dataset_sink_mode) ????print("==============?{}?==============".format(acc))

      src目錄下config.py(用來設置運行參數的文件)

      from?easydict?import?EasyDict?as?edict mnist_cfg?=?edict({ ????'num_classes':?10, ????'lr':?0.01, ????'momentum':?0.9, ????'epoch_size':?10, ????'batch_size':?32, ????'buffer_size':?1000, ????'image_height':?32, ????'image_width':?32, ????'save_checkpoint_steps':?1875, ????'keep_checkpoint_max':?10, })

      第二步:執行train.py開始訓練模型的

      命令:python train.py

      執行結果:

      看到出現Epoch time:和per step time且屏幕不再滾動就說明訓練已經完成。訓練完成后我們可以發現代碼目錄下生成了一個新的文件夾叫CKPT,這個文件夾內存放的就是訓練后的ckpt文件,在后面的驗證代碼中會用到這個里面的文件

      第三步:執行驗證代碼test.py

      命令:python eval.py --ckpt_path=./ckpt/checkpoint_lenet-10_1875.ckpt

      說明:--ckpt_path 參數指定ckpt文件路徑。這里我們選擇前面訓練產生的最后一個ckpt,也就是checkpoint_lenet-10_1875.ckpt

      執行結果:

      看到命令行中出現'Accuracy'的結果后,就說明代碼運行成功了,可以看到這次模型訓練的進度為98.4375%還算可以。

      四、總結

      Lenet+MNIST的模型訓練在我看來可以算是Mindspore的Hello world了,執行起來難度不是很大,整個的運行時間也不會很久。這次的模型訓練是在CPU環境下運行的,等后面有機會裝一個GPU版本,跑一個resnet50+Cifar10看看效果有沒有比前幾個版本的運行速度快一點。當然更多的算法實例可以參考Mindspore官方碼云下的Model_Zoo,里面還有不少好玩的算法代碼。有興趣的可以去試著跑跑看,代碼地址:https://gitee.com/mindspore/mindspore/tree/r1.0/model_zoo

      AI

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

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

      上一篇:在excel2003中給表格添加邊框(excel2003怎么加邊框)
      下一篇:excel中移動行的教程
      相關文章
      久久精品国产亚洲一区二区| 亚洲成熟xxxxx电影| 亚洲中字慕日产2020| 亚洲成人激情在线| 久久亚洲国产午夜精品理论片 | 亚洲一区二区三区高清| 亚洲AV永久无码精品成人| 精品国产亚洲一区二区三区| 亚洲级αV无码毛片久久精品| 久久精品国产精品亚洲艾草网美妙| 亚洲国产精品无码久久青草 | 亚洲精品黄色视频在线观看免费资源 | 亚洲色中文字幕无码AV| 久久久久久A亚洲欧洲AV冫| 自拍偷自拍亚洲精品情侣| 国产成人精品日本亚洲专区61| 亚洲精品无码鲁网中文电影| 亚洲AV中文无码字幕色三| 亚洲v高清理论电影| 久久久久亚洲AV无码网站| 亚洲日韩国产精品无码av| 亚洲国产成人九九综合| 亚洲不卡中文字幕| 一区二区亚洲精品精华液| 亚洲国产成人综合精品| 亚洲高清无码专区视频| 久久久久亚洲av成人无码电影| 中文字幕精品亚洲无线码一区| 国产V亚洲V天堂无码久久久| 亚洲一区二区电影| 亚洲一区免费在线观看| 亚洲欧洲av综合色无码| 国产区图片区小说区亚洲区| 亚洲国产aⅴ综合网| 中文字幕精品亚洲无线码一区| 久久精品亚洲中文字幕无码网站| 亚洲一区影音先锋色资源| 亚洲另类图片另类电影| 亚洲欧洲av综合色无码| 亚洲av日韩aⅴ无码色老头| 亚洲精品WWW久久久久久|