参考说明教案_第1页
参考说明教案_第2页
参考说明教案_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

RNNLSTM。本文将通过一个实战项目带大家使用PyTorch搭建RNN模型。本项目将构建一个RNN模型,来对MNIST问,MNIST数据集不是吗,而RNN是处理序列信号的。为什么识别也能使用RNN模型呢?其实,这里我们可以把看成是序列信号,例如下面是MNIST数据集的一张图MNIST数据集中所有的都是28x28的。按行来看,的每一行都包含28个像素点,一共有28行。因此,我们可以把每一行的28个像素点当成RNN的一个输入。总共有28行,则。的分割方式如下图所示:输入已经确定了,对于输出,因为是分类问题,识别0~9数字,因此,RNN模型应该有个输出,即。此例中,确定了基本结构和输入输出之后,我们开始使用PyTorchRNNMNIST下面代码实现了MNIST数据集的导入。importtorchimporttorchvisionimporttorchvision.transformsastransformsimporttorch.nnasnnimporttorch.nn.functionalasFimporttorch.optimasoptimimportmatplotlib.pyplotaspltimportnumpyasnptransformpose(#trainset=##不从网络上trainloader=torch.utils.data.DataLoader(trainset,testset=#不从网络上testloader=torch.utils.data.DataLoader(testset,batch_size=4,shuffle=False, 成,这里的download设置为False,即从本地导入数据集。我们设置,

表示每次epoch都重新打乱训练样本 下面程序展示了Mini-batch训练样本并标注正确的过程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,训练集包含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#每行包含#隐藏层神经元设置为84是否将batch self.out=nn.Linear(8410#输出层,包含10个神经元,对应defforward(self,r_out,(h_n,h_c)=self.rnn(x,RNNout=self.out(r_out[:,-1,return以上代码是构建RNN的部分。我们发现PyTroch中构建RNN模型非常简单,只需简单

input_size=

表示每个输入元素的维度,即每行包含28个像hidden_size=self.out=nn.Linear(84, 将隐藏层神经元设置为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,非常直观,可以完整清晰地查看我们构建的RNN模型结构。

表示选择最后一正如之前利用PyTorch构建CNN模型的实战过程,我们仍使用Adamcriterion=optimizer=optim.Adam(net.parameters(),num_epoches #设置epochcost #forepochinrunning_loss=fori,datainenumerate(trainloader,#inputs,labels= inputsinputs.view(-12828)设置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=。否则,梯度会累加,造成训练错误和失效。PyTorch能自动完成所有梯度计算。我们发现,PyTorch中RNN的训练代码与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显然,随着迭代训练,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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论