《人工智能應(yīng)用開發(fā)》課件-第8、9章手寫數(shù)字識(shí)別_第1頁(yè)
《人工智能應(yīng)用開發(fā)》課件-第8、9章手寫數(shù)字識(shí)別_第2頁(yè)
《人工智能應(yīng)用開發(fā)》課件-第8、9章手寫數(shù)字識(shí)別_第3頁(yè)
《人工智能應(yīng)用開發(fā)》課件-第8、9章手寫數(shù)字識(shí)別_第4頁(yè)
《人工智能應(yīng)用開發(fā)》課件-第8、9章手寫數(shù)字識(shí)別_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PyTorch框架基礎(chǔ)實(shí)踐目錄1PyTorch簡(jiǎn)介開源的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)框架2017年1月,F(xiàn)AIR(FacebookAIResearch)發(fā)布了PyTorch0.1它強(qiáng)調(diào)易用性和靈活性,并允許用深度學(xué)習(xí)領(lǐng)域慣用的Python來表示深度學(xué)習(xí)模型PyTorch提供了一個(gè)核心數(shù)據(jù)結(jié)構(gòu)—張量(Tensor)類似的框架還有TensorFlow、PaddlePaddle、MindSpore等PyTorch簡(jiǎn)介PyTorch是什么?詳見官網(wǎng):

快速安裝:pipinstalltorch課程代碼運(yùn)行環(huán)境:Python3.9.x、PyTorch1.13.0PyTorch簡(jiǎn)介環(huán)境搭建目錄1PyTorch簡(jiǎn)介2Tensor操作創(chuàng)建張量importtorcha=torch.tensor(0.1)b=torch.tensor(0.3,dtype=torch.float64)result=a+bprint(result)0.4Tensor操作張量(Tensor):PyTorch網(wǎng)絡(luò)運(yùn)算中的基本數(shù)據(jù)結(jié)構(gòu)(類似ndarray)ones=torch.ones((3,2))#全1張量range_tensor=torch.arange(1,11,1)#等差序列張量print('ones:',ones,'\n','range_tensor:',range_tensor)ones:tensor([[1.,1.],[1.,1.],[1.,1.]])range_tensor:tensor([1,2,3,4,5,6,7,8,9,10])Tensor操作創(chuàng)建特定的張量output=torch.zeros((2,2),dtype=torch.float32)print("output:{}".format(type(output)))n_output=output.numpy()print("n_output:{}".format(type(n_output)))torch.from_numpy(n_output)#將ndarray轉(zhuǎn)為tensoroutput:<class'torch.Tensor’>n_output:<class'numpy.ndarray'>Tensor操作tensor與ndarray相互轉(zhuǎn)化目錄1PyTorch簡(jiǎn)介2Tensor操作3構(gòu)建一個(gè)線性模型請(qǐng)根據(jù)這100個(gè)樣本數(shù)據(jù)找出合適的??和??使得??=????+??構(gòu)建一個(gè)線性模型任務(wù)描述

xy00.170.3310.110.3420.520.5130.930.4640.180.4850.670.466……讀取數(shù)據(jù)構(gòu)造一個(gè)線性模型構(gòu)造優(yōu)化器最小化方差(訓(xùn)練)性能評(píng)估構(gòu)建一個(gè)線性模型任務(wù):構(gòu)建一個(gè)線性模型??=????+??

xy00.170.3310.110.3420.520.5130.930.4640.180.4850.670.466……Currentloss:58.542225data=pd.read_csv('line_fit_data.csv').values#將數(shù)據(jù)讀取后存儲(chǔ)為ndarray格式X=torch.tensor(data[:,0],dtype=torch.float32)#樣本自變量y=torch.tensor(data[:,1],dtype=torch.float32)#目標(biāo)變量構(gòu)建一個(gè)線性模型1.讀取數(shù)據(jù)#構(gòu)造一個(gè)線性模型deflinear_model(X,W,b):returnW*X+b#構(gòu)造損失函數(shù)defloss_fn(y_true,y_pre):return((y_true-y_pre)**2).mean()構(gòu)建一個(gè)線性模型2.構(gòu)造一個(gè)線性模型y_pre=line_model(X,w,b)#前向傳播loss=loss_fn(y,y_pre)#計(jì)算損失loss.backward()#反向傳播構(gòu)建一個(gè)線性模型3.構(gòu)造優(yōu)化器y_pre=line_model(X,w,b)#前向傳播loss=loss_fn(y,y_pre)#計(jì)算損失loss.backward()#反向傳播b.data-=learning_rate*b.grad#沿著梯度反方向更新權(quán)值w.data-=learning_rate*w.grad#沿著梯度反方向更新閾值#注意在權(quán)值更新后須清零張量的梯度w.grad.zero_()b.grad.zero_()構(gòu)建一個(gè)線性模型4.最小化方差(訓(xùn)練)構(gòu)建一個(gè)線性模型模型訓(xùn)練前Currentloss:58.542225Epoch0Loss=19.8392w=-8.41b=8.99Epoch1Loss=8.9474w=-7.80b=9.07Epoch2Loss=8.0281w=-7.34b=8.89Epoch3Loss=7.3553w=-6.92b=8.69……Epoch75Loss=0.0139w=2.09b=4.20Epoch76Loss=0.0127w=2.11b=4.20……Epoch175Loss=0.0000w=2.49b=4.00構(gòu)建一個(gè)線性模型模型訓(xùn)練中訓(xùn)練中的模型變化過程構(gòu)建一個(gè)線性模型模型訓(xùn)練后Currentloss:3.2196497e-06目錄1PyTorch簡(jiǎn)介2Tensor操作3構(gòu)建一個(gè)線性模型4識(shí)別手寫數(shù)字識(shí)別手寫數(shù)字目標(biāo):構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)模型,識(shí)別圖像中的數(shù)字。model509MNIST數(shù)據(jù)集包括70000個(gè)0~9的手寫數(shù)字圖像,每張圖像包括784個(gè)像素值及一個(gè)標(biāo)簽。識(shí)別手寫數(shù)字認(rèn)識(shí)數(shù)據(jù)加載數(shù)據(jù)數(shù)據(jù)加工構(gòu)建模型(搭建網(wǎng)絡(luò))模型配置模型訓(xùn)練與保存模型應(yīng)用識(shí)別手寫數(shù)字案例流程data=np.load('mnist.npz’)train_images,train_labels,test_images,test_labels=data['x_train'],data['y_train'],data['x_test'],data['y_test']識(shí)別手寫數(shù)字認(rèn)識(shí)數(shù)據(jù)共70000張照片,其中訓(xùn)練集60000張,測(cè)試集10000張print(train_images.shape)print(train_labels.shape)print(test_images.shape)print(test_labels.shape)(60000,28,28)(60000,)(10000,28,28)(10000,)識(shí)別手寫數(shù)字認(rèn)識(shí)數(shù)據(jù)使用torchvision.datasets下載MNIST數(shù)據(jù)集,并劃分好訓(xùn)練集與測(cè)試集。torchvision.datasets.MNIST(root,train=True,transform=None,target_transform=None,download=False)root(string):數(shù)據(jù)集在本地的保存地址train(bool):True=訓(xùn)練集,F(xiàn)alse=測(cè)試集,默認(rèn)為Truetransform(callable,optional):一個(gè)轉(zhuǎn)換函數(shù),將PIL圖像轉(zhuǎn)換為別的形式輸出target_transform(callable,optional):一個(gè)函數(shù),輸入為target,輸出對(duì)其的轉(zhuǎn)換download(bool,optional):如果為True,從互聯(lián)網(wǎng)上下載數(shù)據(jù)集,并把數(shù)據(jù)集放在root目錄下識(shí)別手寫數(shù)字加載數(shù)據(jù)(調(diào)用mindspore內(nèi)置數(shù)據(jù)集)對(duì)于torch網(wǎng)絡(luò)暫不支持直接加載的數(shù)據(jù)集,可以通過Dataset和DataLoader來進(jìn)行加工轉(zhuǎn)化。X_train_tensor=torch.tensor(X_train/255,dtype=torch.float32)y_train_tensor=torch.tensor(y_train,dtype=64)train_ds=TensorDataset(X_train_tensor,y_train_tensor)#轉(zhuǎn)為tensordata格式train_dl=torch.utils.data.DataLoader(train_ds,batch_size=32,shuffle=True)#執(zhí)行打亂和分批操作識(shí)別手寫數(shù)字加載自定義數(shù)據(jù)識(shí)別手寫數(shù)字網(wǎng)絡(luò)結(jié)構(gòu)隱藏層輸入層x1x2xix784flaten激活函數(shù):輸出層h1h2h128y1y2y10衡量?jī)蓚€(gè)概率分布之間的差異識(shí)別手寫數(shù)字損失函數(shù)/目標(biāo)函數(shù):交叉熵(cross-entropy)識(shí)別手寫數(shù)字搭建網(wǎng)絡(luò)#定義損失函數(shù)loss_fn=torch.nn.CrossEntropyLoss()#定義優(yōu)化器optimizer=torch.optim.SGD(network.parameters(),lr=0.01)識(shí)別手寫數(shù)字定義網(wǎng)絡(luò)參數(shù)forepochinrange(1,21):forimg,labelintrain_dl:y_pre=network(img)loss=loss_fn(y_pre,label)network.zero_grad()#將網(wǎng)絡(luò)中的所有梯度清空

loss.backward()#根據(jù)網(wǎng)絡(luò)損失值進(jìn)行反向求導(dǎo)

optimizer.step()#對(duì)網(wǎng)絡(luò)權(quán)值進(jìn)行優(yōu)化

print('第{}輪最后一批樣本訓(xùn)練損失值為:{}'.format(epoch,loss.item()))識(shí)別手寫數(shù)字網(wǎng)絡(luò)訓(xùn)練#將測(cè)試集數(shù)據(jù)放入訓(xùn)練好的模型中進(jìn)行性能評(píng)估predicted=network(X_test_tensor)result=predicted.data.numpy().argmax(axis=1)acc_test=(result==y_test).mean()print('模型測(cè)試精度:',acc_test)識(shí)別手寫數(shù)字模型性能評(píng)估先搭建一個(gè)與訓(xùn)練時(shí)結(jié)構(gòu)一致的網(wǎng)絡(luò),然后將保存好的參數(shù)導(dǎo)入其中model=NetWork()#構(gòu)建模型model_state_dict=torch.load('mnist-1.pt')#加載訓(xùn)練好的模型參數(shù)model.load_state_dict(model_state_dict)#將參數(shù)導(dǎo)入模型中識(shí)別手寫數(shù)字模型應(yīng)用foriinrange(30):image=plt.imread('test_images/{}.jpg'.format(i))#讀取照片

image=torch.tensor(image/255,dtype=torch.float32)#將數(shù)據(jù)轉(zhuǎn)為tensorimage=im

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論