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

下載本文檔

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

文檔簡介

RNNLSTM。本文將通過一個實戰(zhàn)項目帶大家使用PyTorch搭建RNN模型。本項目將構(gòu)建一個RNN模型,來對MNIST問,MNIST數(shù)據(jù)集不是嗎,而RNN是處理序列信號的。為什么識別也能使用RNN模型呢?其實,這里我們可以把看成是序列信號,例如下面是MNIST數(shù)據(jù)集的一張圖MNIST數(shù)據(jù)集中所有的都是28x28的。按行來看,的每一行都包含28個像素點,一共有28行。因此,我們可以把每一行的28個像素點當成RNN的一個輸入??偣灿?8行,則。的分割方式如下圖所示:輸入已經(jīng)確定了,對于輸出,因為是分類問題,識別0~9數(shù)字,因此,RNN模型應(yīng)該有個輸出,即。此例中,確定了基本結(jié)構(gòu)和輸入輸出之后,我們開始使用PyTorchRNNMNIST下面代碼實現(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ù)集。我們設(shè)置,

表示每次epoch都重新打亂訓(xùn)練樣本 下面程序展示了Mini-batch訓(xùn)練樣本并標注正確的過程defnpimg=img.numpy()plt.imshow(np.transpose(npimg,(1,2,0)))#選擇一個batchdataiter=images,labels=#顯示#打印print(''.join('%11s'%labels[j].numpy()forjintorch.Size([60000,torch.Size([60000,28,torch.Size([10000,28,訓(xùn)練集包含60000張,測試集包含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個神經(jīng)元,對應(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模型非常簡單,只需簡單

input_size=

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

(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模型的實戰(zhàn)過程,我們?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=。否則,梯度會累加,造成訓(xùn)練錯誤和失效。PyTorch能自動完成所有梯度計算。我們發(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論