參考說(shuō)明教案_第1頁(yè)
參考說(shuō)明教案_第2頁(yè)
參考說(shuō)明教案_第3頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

RNNLSTM。本文將通過(guò)一個(gè)實(shí)戰(zhàn)項(xiàng)目帶大家使用PyTorch搭建RNN模型。本項(xiàng)目將構(gòu)建一個(gè)RNN模型,來(lái)對(duì)MNIST問(wèn),MNIST數(shù)據(jù)集不是嗎,而RNN是處理序列信號(hào)的。為什么識(shí)別也能使用RNN模型呢?其實(shí),這里我們可以把看成是序列信號(hào),例如下面是MNIST數(shù)據(jù)集的一張圖MNIST數(shù)據(jù)集中所有的都是28x28的。按行來(lái)看,的每一行都包含28個(gè)像素點(diǎn),一共有28行。因此,我們可以把每一行的28個(gè)像素點(diǎn)當(dāng)成RNN的一個(gè)輸入??偣灿?8行,則。的分割方式如下圖所示:輸入已經(jīng)確定了,對(duì)于輸出,因?yàn)槭欠诸悊?wèn)題,識(shí)別0~9數(shù)字,因此,RNN模型應(yīng)該有個(gè)輸出,即。此例中,確定了基本結(jié)構(gòu)和輸入輸出之后,我們開(kāi)始使用PyTorchRNNMNIST下面代碼實(shí)現(xiàn)了MNIST數(shù)據(jù)集的導(dǎo)入。importtorchimporttorchvisionimporttorchvision.transformsastransformsimporttorch.nnasnnimporttorch.nn.functionalasFimporttorch.optimasoptimimportmatplotlib.pyplotaspltimportnumpyasnptransformpose(#trainset=##不從網(wǎng)絡(luò)上trainloader=torch.utils.data.DataLoader(trainset,testset=#不從網(wǎng)絡(luò)上testloader=torch.utils.data.DataLoader(testset,batch_size=4,shuffle=False, 成,這里的download設(shè)置為False,即從本地導(dǎo)入數(shù)據(jù)集。我們?cè)O(shè)置,

表示每次epoch都重新打亂訓(xùn)練樣本 下面程序展示了Mini-batch訓(xùn)練樣本并標(biāo)注正確的過(guò)程defnpimg=img.numpy()plt.imshow(np.transpose(npimg,(1,2,0)))#選擇一個(gè)batchdataiter=images,labels=#顯示#打印print(''.join('%11s'%labels[j].numpy()forjintorch.Size([60000,torch.Size([60000,28,torch.Size([10000,28,訓(xùn)練集包含60000張,測(cè)試集包含10000張,每張大小為28x28RNN與CNN類似,我們可以使用PyTorch直接搭建RNN模型,首先定義RNN類。classNet(nn.Module):definit(self):super(Net,self).initself.rnn=nn.LSTM(input_size=28,hidden_size=84,h,time_step,#使用LSTM#每行包含#隱藏層神經(jīng)元設(shè)置為84是否將batch self.out=nn.Linear(8410#輸出層,包含10個(gè)神經(jīng)元,對(duì)應(yīng)defforward(self,r_out,(h_n,h_c)=self.rnn(x,RNNout=self.out(r_out[:,-1,return以上代碼是構(gòu)建RNN的部分。我們發(fā)現(xiàn)PyTroch中構(gòu)建RNN模型非常簡(jiǎn)單,只需簡(jiǎn)單

input_size=

表示每個(gè)輸入元素的維度,即每行包含28個(gè)像hidden_size=self.out=nn.Linear(84, 將隱藏層神經(jīng)元設(shè)置為84個(gè), hidden_size=self.out=nn.Linear(84,為L(zhǎng)STM的單元

(h_n,r_out,(h_n,h_c)=self.rnn(x,r_out,(h_n,h_c)=self.rnn(x,out=self.out(r_out[:,-1,out=self.out(r_out[:,-1,netnet=(rnn):LSTM(28,84,num_layers=2,(out):Linear(in_features=84,out_features=10,非常直觀,可以完整清晰地查看我們構(gòu)建的RNN模型結(jié)構(gòu)。

表示選擇最后一正如之前利用PyTorch構(gòu)建CNN模型的實(shí)戰(zhàn)過(guò)程,我們?nèi)允褂肁damcriterion=optimizer=optim.Adam(net.parameters(),num_epoches #設(shè)置epochcost #forepochinrunning_loss=fori,datainenumerate(trainloader,#inputs,labels= inputsinputs.view(-12828)設(shè)置RNN輸入維度為(batchtime_step,input_size)##正 、反 outputs=loss=criterion(outputs,#running_loss+=ifi2000== #每隔2000mini-batchesprint('[%d,%5d]loss:%.3f'(epoch+1,i+1,running_loss/cost.append(running_loss/running_loss=。否則,梯度會(huì)累加,造成訓(xùn)練錯(cuò)誤和失效。PyTorch能自動(dòng)完成所有梯度計(jì)算。我們發(fā)現(xiàn),PyTorch中RNN的訓(xùn)練代碼與inputs=inputs.view(-1,28,inputs=inputs.view(-1,28,(batchtime_stepinput_size),即(42828)。[1,2000]loss:[1,4000]loss:[1,6000]loss:[1,8000]loss:[1,10000]loss:[1,12000]loss:[1,14000]loss:[2,2000]loss:[2,4000]loss:[2,6000]loss:[2,8000]loss:[2,10000]loss:[2,12000]loss:[2,14000]loss:[3,2000]loss:[3,4000]loss:[3,6000]loss:[3,8000]loss:[3,10000]loss:[3,12000]loss:[3,14000]loss:[4,2000]loss:[4,4000]loss:[4,6000]loss:[4,8000]loss:[4,10000]loss:[4,12000]loss:[4,14000]loss:[5,2000]loss:[5,4000]loss:[5,6000]loss:[5,8000]loss:[5,10000]loss:[5,12000]loss:[5,14000]loss:將所有Loss顯然,隨著迭代訓(xùn)練,Loss逐漸減小。correct=total=total+=correct+=(predicted==print('Accuracyofthenetworkonthe10000testimages:%.3f%%'(100*correct/ datainimages,labels=images=images.view(-1,28,outputs=_,predicted=AccuracyAccuracy

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論