国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

這篇具有很好參考價(jià)值的文章主要介紹了手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

首先我們要先了解深度學(xué)習(xí)的概念和AI計(jì)算框架的角色(https://zhuanlan.zhihu.com/p/463019160),本篇文章將演示怎么利用MindSpore來(lái)訓(xùn)練一個(gè)AI模型。和上一章的場(chǎng)景一致,我們要訓(xùn)練的模型是用來(lái)對(duì)手寫(xiě)數(shù)字圖片進(jìn)行分類的LeNet5模型

請(qǐng)參考(http://yann.lecun.com/exdb/lenet/)。

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

圖1 MindSpore使用流程

安裝MindSpore

MindSpore提供給用戶使用的是Python接口(什么是Python,請(qǐng)參考:

https://zhuanlan.zhihu.com/p/462756985),所以我們首先需要安裝MindSpore的whl包,安裝之后就可以導(dǎo)入(import)MindSpore提供的方法接口了。安裝whl包有兩種方式:

方式一:進(jìn)入MindSpore官網(wǎng),根據(jù)自己的設(shè)備和Python版本選擇安裝命令。比如我的Python版本是3.7.5,我的設(shè)備是筆記本(CPU),那么我就復(fù)制下圖紅框中的命令進(jìn)行安裝:

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

圖2 MindSpore安裝界面

安裝過(guò)程如下:

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

圖3 MindSpore安裝過(guò)程

注意:由于MindSpore還依賴于其他的Python三方庫(kù),所以在安裝過(guò)程中,系統(tǒng)還會(huì)自動(dòng)下載、安裝其他的Python三方庫(kù),如numpy、pillow、scipy等等,安裝結(jié)束后,如果能 import mindspore 成功,說(shuō)明MindSpore安裝成功了:

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

圖4 MindSpore安裝成功

方式二:可以在版本列表中找到對(duì)應(yīng)的whl包,點(diǎn)擊就能下載:

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

圖5 MindSpore版本下載列表

下載完成后,把whl包放到自己的目錄下,執(zhí)行 pip install xxx.whl:

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

圖6 MindSpore第二種安裝方式

定義模型

安裝好MindSpore之后,我們就可以導(dǎo)入MindSpore提供的算子(卷積、全連接、池化等函數(shù):https://zhuanlan.zhihu.com/p/463019160)來(lái)構(gòu)建我們的模型了??梢赃@么比喻:我們構(gòu)建一個(gè)AI模型就像建一個(gè)房子,而MindSpore提供給我們的算子就像是磚塊、窗戶、地板等基本組件。

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

圖7 定義LeNet5模型

如上圖所示,我們用到的“磚塊”都是mindspore.nn模塊提供的。注意:這里用到了Python的類(class),由②和③兩部分組成。我們這里定義的類是class LeNet5,它由初始化函數(shù) __init__(self) 和構(gòu)造函數(shù)construct(self, x)組成。初始化函數(shù)定義了我們構(gòu)造模型所需要用到的算子,比如conv算子、relu算子、flatten算子等等,這些算子都是從mindspore.nn獲取的;構(gòu)造函數(shù)就是把我們?cè)诔跏蓟瘮?shù)中導(dǎo)入的算子按順序排放,構(gòu)成我們最終的模型。construct()函數(shù)的輸入就是我們這個(gè)模型預(yù)測(cè)的對(duì)象,比如第一章講的黑白圖片像素矩陣;而“return y”中的就是預(yù)測(cè)的結(jié)果,對(duì)應(yīng)于第一章講到的10分類手寫(xiě)數(shù)字?jǐn)?shù)據(jù)集,就是一個(gè)行10列的數(shù)組(這里的是指輸入圖片的數(shù)量,AI模型支持多張圖片同時(shí)推理)。

導(dǎo)入訓(xùn)練數(shù)據(jù)集

什么是訓(xùn)練數(shù)據(jù)集?剛剛定義好的模型是不能對(duì)圖片進(jìn)行正確分類的,我們要通過(guò)“訓(xùn)練”過(guò)程來(lái)調(diào)整模型的參數(shù)矩陣的值。訓(xùn)練過(guò)程就需要用到訓(xùn)練樣本,也就是打上了正確標(biāo)簽的圖片。這就好比我們教小孩兒認(rèn)識(shí)動(dòng)物,需要拿幾張圖片給他們看,然后告訴他們這是什么、那是什么,教了幾遍之后,小孩兒就能認(rèn)識(shí)了。那么我們訓(xùn)練LeNet5模型就需要用到MNIST數(shù)據(jù)集,請(qǐng)參考(http://yann.lecun.com/exdb/mnist/)。這個(gè)數(shù)據(jù)集由兩部分組成:訓(xùn)練集(6萬(wàn)張圖片)和測(cè)試集(1萬(wàn)張圖片),都是0~9的黑白手寫(xiě)數(shù)字圖片。訓(xùn)練集是用來(lái)訓(xùn)練AI模型的,測(cè)試集是用來(lái)測(cè)試訓(xùn)練后的模型分類準(zhǔn)確率的。

下載得到的數(shù)據(jù)集最初是壓縮文件,還不能直接傳給MindSpore的訓(xùn)練接口使用,我們要先用MindSpore提供的數(shù)據(jù)處理接口把他們讀進(jìn)來(lái):

import mindspore.dataset as ds
mnist_ds = ds.MnistDataset(data_path)  # 導(dǎo)入下載的MNIST數(shù)據(jù)集

然后進(jìn)行數(shù)據(jù)增強(qiáng)(比如把圖片大小轉(zhuǎn)化成相同的尺寸、像素值標(biāo)準(zhǔn)化、歸一化等操作),提升訓(xùn)練效率:

import mindspore.dataset.vision.c_transforms as CV
import mindspore.dataset.transforms.c_transforms as C
from mindspore.dataset.vision import Inter
from mindspore import dtype as mstype

# 定義數(shù)據(jù)增強(qiáng)函數(shù)
def create_dataset(data_path, batch_size=32):  # batch_size是每一步訓(xùn)練使用的圖片數(shù)量,一般取32
    """
    create dataset for train or test

    Args:
        data_path (str): Data path
        batch_size (int): The number of data records in each group
    """
    # define dataset
    mnist_ds = ds.MnistDataset(data_path)  # 導(dǎo)入下載的MNIST數(shù)據(jù)集
    # define some parameters needed for data enhancement and rough justification
    resize_height, resize_width = 32, 32
    rescale = 1.0 / 255.0
    shift = 0.0
    rescale_nml = 1 / 0.3081
    shift_nml = -1 * 0.1307 / 0.3081

    # according to the parameters, generate the corresponding data enhancement method
    resize_op = CV.Resize((resize_height, resize_width), interpolation=Inter.LINEAR)
    rescale_nml_op = CV.Rescale(rescale_nml, shift_nml)
    rescale_op = CV.Rescale(rescale, shift)
    hwc2chw_op = CV.HWC2CHW()
    type_cast_op = C.TypeCast(mstype.int32)

    # using map to apply operations to a dataset
    mnist_ds = mnist_ds.map(operations=type_cast_op, input_columns="label")
    mnist_ds = mnist_ds.map(operations=resize_op, input_columns="image")
    mnist_ds = mnist_ds.map(operations=rescale_op, input_columns="image")
    mnist_ds = mnist_ds.map(operations=rescale_nml_op, input_columns="image")
    mnist_ds = mnist_ds.map(operations=hwc2chw_op, input_columns="image")

    # process the generated dataset
    buffer_size = 10000
    mnist_ds = mnist_ds.shuffle(buffer_size=buffer_size)
    mnist_ds = mnist_ds.batch(batch_size, drop_remainder=True)
    return mnist_ds

?訓(xùn)練模型

訓(xùn)練數(shù)據(jù)集和模型定義完成之后呢,我們就可以開(kāi)始訓(xùn)練模型了。但是在訓(xùn)練之前,我們還需要從MindSpore導(dǎo)入兩個(gè)函數(shù):

  • 損失函數(shù),也就是衡量預(yù)測(cè)結(jié)果和真實(shí)標(biāo)簽之間的差距的函數(shù)??催^(guò)上一章的同學(xué)可能會(huì)記得,我們之前用的損失函數(shù)是真實(shí)值與預(yù)測(cè)值之差的2-范數(shù):

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

圖8 2-范數(shù)損失

在這里,我們使用業(yè)界最常用的交叉熵?fù)p失函數(shù)SoftmaxCrossEntropyWithLogits,對(duì)于真實(shí)標(biāo)簽

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

和預(yù)測(cè)值,它們之間的交叉熵?fù)p失計(jì)算公式為:

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

其中J代表數(shù)組的下標(biāo),。從MindSpore導(dǎo)入損失函數(shù):

from mindspore.nn import SoftmaxCrossEntropyWithLogits
# define the loss function
net_loss = SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean') 
  • 優(yōu)化器,優(yōu)化器就是用來(lái)求解損失函數(shù)關(guān)于模型參數(shù)的更新梯度的,它是整個(gè)訓(xùn)練過(guò)程中最重要的工具!我們這里用MindSpore提供的Momentum優(yōu)化器:

import mindspore.nn as nn

lr = 0.01  # 定義學(xué)習(xí)率
momentum = 0.9  # 定義Momentum優(yōu)化器的超參
# define the optimizer
net_opt = nn.Momentum(network.trainable_params(), lr, momentum)  # 導(dǎo)入mindspore提供

?準(zhǔn)備好損失函數(shù)和優(yōu)化器之后我們就可以開(kāi)始訓(xùn)練模型了,也非常簡(jiǎn)單,我們先把前面定義好的模型、損失函數(shù)、優(yōu)化器封裝成一個(gè)Model:

from mindspore import Model
net = LeNet5()
model = Model(net, net_loss , net_opt , metrics={'acc', 'loss'})

然后使用model.train接口就可以訓(xùn)練我們定義的LeNet5模型了:

loss_cb = LossMonitor(per_print_times=ds_train.get_dataset_size())  # 用于監(jiān)控訓(xùn)練過(guò)程中損失函數(shù)值的變化
ds_train = create_dataset(train_data_dir)  # 傳入下載的訓(xùn)練集的路徑
model.train(num_epochs, ds_train, callbacks=[loss_cb])  # num_epochs是訓(xùn)練的輪數(shù),往往訓(xùn)練多輪才能使模型收斂

測(cè)試訓(xùn)練后的模型準(zhǔn)確率

訓(xùn)練結(jié)束后,調(diào)用model.eval()計(jì)算訓(xùn)練后的模型在測(cè)試集上面的分類準(zhǔn)確率:

ds_eval = create_dataset(test_data_dir)  # 傳入下載的訓(xùn)練集的路徑
metrics = model.eval(ds_eval)

小結(jié)

祝賀你耐心看完了MindSpore訓(xùn)練模型的完整過(guò)程,如果你想動(dòng)手操作一遍,但是又沒(méi)有現(xiàn)成的環(huán)境,那么你可以使用官網(wǎng)提供的“在線運(yùn)行”來(lái)體驗(yàn)一番:

手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!

圖9 MindSpore官網(wǎng)提供的免費(fèi)體驗(yàn)入口

這是體驗(yàn)過(guò)程的實(shí)操視頻:

https://zhuanlan.zhihu.com/p/463229660

歡迎投稿

歡迎大家踴躍投稿,有想投稿技術(shù)干貨、項(xiàng)目經(jīng)驗(yàn)等分享的同學(xué),可以添加MindSpore官方小助手:小貓子(mindspore0328)的微信,告訴貓哥哦!

昇思MindSpore官方交流QQ群?:?486831414群里有很多技術(shù)大咖助力答疑!

MindSpore官方資料

GitHub?:?https://github.com/mindspore-ai/mindspore

Gitee?:?https?:?//gitee.com/mindspore/mindspore

官方QQ群?:?486831?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-445378.html

到了這里,關(guān)于手把手教你用MindSpore訓(xùn)練一個(gè)AI模型!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 手把手教你用Python編一個(gè)《我的世界》 2.材質(zhì)及第一人稱

    手把手教你用Python編一個(gè)《我的世界》 2.材質(zhì)及第一人稱

    本次,我們將實(shí)現(xiàn)這樣一個(gè)效果: 首先,導(dǎo)入ursina模塊 創(chuàng)建app 定義Block類,繼承自Button 然后,我們需要一個(gè)天空 定義Sky類 因?yàn)槲覀兯械姆綁K包括天空都需要圖片材質(zhì),所以我們?cè)诔绦蜷_(kāi)頭寫(xiě)以下代碼: 然后咱們先創(chuàng)建一個(gè)超平坦地形,厚度就只有1層吧,因?yàn)榉綁K多了很

    2024年02月04日
    瀏覽(96)
  • 手把手教你用SQLServer連接Visual Studio2019并編寫(xiě)一個(gè)學(xué)生信息管理頁(yè)面

    手把手教你用SQLServer連接Visual Studio2019并編寫(xiě)一個(gè)學(xué)生信息管理頁(yè)面

    目錄 安裝SQLServer 創(chuàng)建新項(xiàng)目 建數(shù)據(jù)庫(kù)建表 窗體設(shè)計(jì) 代碼實(shí)現(xiàn) ?整體效果 ? 用SQLServer連接Visual Studio,首先需要下載SQLServer app。 下載教程,我之前寫(xiě)過(guò),可以點(diǎn)擊如下鏈接先下載安裝SQLServer: SQL Server(express)安裝教程 安裝好SQL之后,打開(kāi)VisualStudio2019,新建一個(gè)window項(xiàng)目 ,步

    2024年02月12日
    瀏覽(21)
  • 手把手教你訓(xùn)練一個(gè)VAE生成模型一生成手寫(xiě)數(shù)字

    手把手教你訓(xùn)練一個(gè)VAE生成模型一生成手寫(xiě)數(shù)字

    VAE(Variational Autoencoder)變分自編碼器是一種使用變分推理的自編碼器,其主要用于生成模型。 VAE 的編碼器是模型的一部分,用于將輸入數(shù)據(jù)壓縮成潛在表示,即編碼。 VAE 編碼器包括兩個(gè)子網(wǎng)絡(luò):一個(gè)是推斷網(wǎng)絡(luò),另一個(gè)是生成網(wǎng)絡(luò)。推斷網(wǎng)絡(luò)輸入原始輸入數(shù)據(jù),并輸出兩

    2024年02月06日
    瀏覽(25)
  • 手把手教你用代碼畫(huà)架構(gòu)圖

    作者:京東物流?覃玉杰 本文將給大家介紹一種簡(jiǎn)潔明了軟件架構(gòu)可視化模型——C4模型,并手把手教大家如何使用 代碼 繪制出精美的C4架構(gòu)圖。 閱讀本文之后,讀者畫(huà)的架構(gòu)圖將會(huì)是這樣的: 注:該圖例僅作繪圖示例使用,不確保其完整性、可行性。 C4是軟件架構(gòu)可視化

    2024年02月04日
    瀏覽(28)
  • 快收藏!手把手教你用AI繪畫(huà)

    快收藏!手把手教你用AI繪畫(huà)

    點(diǎn)個(gè)關(guān)注??跟騰訊工程師學(xué)技術(shù) 最近看到一篇有趣的文章,一副名為《太空歌劇院》(如下圖)的藝術(shù)品在某美術(shù)比賽上,獲得了第一名的成績(jī), 有意思的是這件作品是通過(guò)AI來(lái)實(shí)現(xiàn)的畫(huà)作, 頓時(shí)覺(jué)得非常神奇。結(jié)合近期科技媒體頻頻報(bào)道的AI作畫(huà)爆火現(xiàn)象,深入了解了下

    2024年02月09日
    瀏覽(29)
  • 手把手教你用AirtestIDE無(wú)線連接手機(jī)

    手把手教你用AirtestIDE無(wú)線連接手機(jī)

    一直以來(lái),我們發(fā)現(xiàn)同學(xué)們都挺喜歡用無(wú)線的方式連接手機(jī),正好安卓11出了個(gè)無(wú)線連接的新姿勢(shì),我們今天就一起來(lái)看看,如何用AirtestIDE無(wú)線連接你的Android設(shè)備~ 當(dāng) 手機(jī)與電腦處在同一個(gè)wifi 下,即可嘗試無(wú)線連接手機(jī)了,但是這種方式受限于網(wǎng)絡(luò)連接的穩(wěn)定性,可能會(huì)出

    2023年04月18日
    瀏覽(27)
  • 手把手教你用jmeter做壓力測(cè)試(詳圖)

    手把手教你用jmeter做壓力測(cè)試(詳圖)

    壓力測(cè)試是每一個(gè)Web應(yīng)用程序上線之前都需要做的一個(gè)測(cè)試,他可以幫助我們發(fā)現(xiàn)系統(tǒng)中的瓶頸問(wèn)題,減少發(fā)布到生產(chǎn)環(huán)境后出問(wèn)題的幾率;預(yù)估系統(tǒng)的承載能力,使我們能根據(jù)其做出一些應(yīng)對(duì)措施。所以壓力測(cè)試是一個(gè)非常重要的步驟,下面我?guī)Т蠹襾?lái)使用一款壓力測(cè)試工

    2024年02月02日
    瀏覽(29)
  • 手把手教你用video實(shí)現(xiàn)視頻播放功能

    手把手教你用video實(shí)現(xiàn)視頻播放功能

    哈嘍。大家好啊 今天需要做一個(gè)視頻播放列表,讓我想到了video的屬性 下面讓我們先看看實(shí)現(xiàn)效果 這里是我的代碼 width是當(dāng)前播放頁(yè)面的寬度 height是當(dāng)前播放頁(yè)面的高度 Controls屬性用就是控制欄那些了 比如播放按鈕 暫停按鈕 autoplay是指的是自動(dòng)播放 poster是指的是初始化進(jìn)

    2024年02月12日
    瀏覽(32)
  • 手把手教你用Python編寫(xiě)郵箱腳本引擎

    手把手教你用Python編寫(xiě)郵箱腳本引擎

    版權(quán)聲明:原創(chuàng)不易,本文禁止抄襲、轉(zhuǎn)載需附上鏈接,侵權(quán)必究! 郵箱是傳輸信息方式之一,個(gè)人,企業(yè)等都在使用,朋友之間發(fā)消息,注冊(cè)/登錄信息驗(yàn)證,訂閱郵箱,企業(yè)招聘,向客戶發(fā)送消息等都是郵箱的使用場(chǎng)景;郵箱有兩個(gè)較重要的協(xié)議:SMTP和POP3,均位于OSI7層

    2024年02月06日
    瀏覽(104)
  • 手把手教你用 Jenkins 自動(dòng)部署 SpringBoot

    手把手教你用 Jenkins 自動(dòng)部署 SpringBoot

    CI/CD 是一種通過(guò)在應(yīng)用開(kāi)發(fā)階段引入自動(dòng)化來(lái)頻繁向客戶交付應(yīng)用的方法。 CI/CD 的核心概念可以總結(jié)為三點(diǎn): 持續(xù)集成 持續(xù)交付 持續(xù)部署 CI/CD 主要針對(duì)在集成新代碼時(shí)所引發(fā)的問(wèn)題(俗稱\\\"集成地獄\\\")。 為什么會(huì)有集成地獄這個(gè)“雅稱”呢?大家想想我們一個(gè)項(xiàng)目部署的

    2024年02月02日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包