深度学习案例教程 课件3.4.2全连接神经网络搭建_第1页
深度学习案例教程 课件3.4.2全连接神经网络搭建_第2页
深度学习案例教程 课件3.4.2全连接神经网络搭建_第3页
深度学习案例教程 课件3.4.2全连接神经网络搭建_第4页
深度学习案例教程 课件3.4.2全连接神经网络搭建_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

实践任务2-全连接神经网络模型搭建1定义全连接神经网络

在PyTorch中,

torch.nn是专门为神经网络设计的模块化接口,,可以用于定义和运行神经网络。

nn.Module是nn库中十分重要的类,它包含网络各层的定义以及forward函数。

只要在nn.Module的子类中定义forward函数,backward函数就会被自动实现(利用autograd)。

实践任务2-全连接神经网络模型搭建1定义全连接神经网络

importtorch.nnasnn#导入nn库

classNeuralNet(nn.Module):

def__init__(self,input_num,hidden_num,output_num):

super(NeuralNet,self).__init__()

self.fc1=nn.Linear(input_num,hidden_num)

self.fc2=nn.Linear(hidden_num,output_num)

self.relu=nn.ReLU()

defforward(self,x):

x=self.fc1(x)

x=self.relu(x)

y=self.fc2(x)

returny

实践任务2-全连接神经网络模型搭建1定义全连接神经网络

#设置参数

epoches=20

lr=0.001

input_num=784

hidden_num=500

output_num=10

device=torch.device("cuda"iftorch.cuda.is_available()else"cpu")

#创建网络模型

model=NeuralNet(input_num,hidden_num,output_num)

print(model)实践任务2-全连接神经网络模型搭建1定义全连接神经网络

运行后输出如下:NeuralNet((fc1):Linear(in_features=784,out_features=500,bias=True)(fc2):Linear(in_features=500,out_features=10,bias=True)(relu):ReLU())实践任务2-全连接神经网络模型搭建2前向传播

定义好网络模型后,我们会将所有的数据按照batch的方式进行输入,得到对应的网络输出,这就是所有的前向传播。

实践任务2-全连接神经网络模型搭建2前向传播

#前向传播

images=images.reshape(-1,28*28)

image=images[:2]

label=labels[:2]

print(image.size())

print(label)

out=model(image)

print(out)实践任务2-全连接神经网络模型搭建2前向传播

运行程序输出的结果如下:torch.Size([2,784])tensor([0,6])tensor([[0.1336,0.2989,0.1140,-0.0331,0.1986,-0.1656,-0.1346,0.1204,-0.3536,0.2364],[0.3198,0.3422,-0.2137,0.2526,0.3694,-0.0444,-0.1710,-0.0321,0.1679,-0.2004]],grad_fn=<AddmmBackward0>)实践任务2-全连接神经网络模型搭建

3计算损失

损失函数需要一对输入:模型输出和目标,用来评估输出值和目标值之间的差距,损失函数用loss表示,损失函数的作用就是计算神经网络每次迭代的前向计算结果和真实值之间的差距,从而指导模型下一步训练往正确的方向进行。常见的损失函数有交叉熵损失函数和均方误差损失函数。实践任务2-全连接神经网络模型搭建3计算损失在PyTorch中,nn库模块提供了多种损失函数,常用的有以下几种:1.处理回归问题的nn.MSELoss函数,2.处理分类问题的nn.BCELoss函数,3.处理多分类问题的nn.CrossEntropyLoss函数。实践任务2-全连接神经网络模型搭建3计算损失#定义损失函数

criterion=nn.CrossEntropyLoss()

loss=criterion(out,label)

print(loss)实践任务2-全连接神经网络模型搭建

4反向传播与参数更新

当计算出一次前向传播的loss值之后,可进行反向传播计算梯度,以此来更新参数。在PyTorch中,对loss调用backward函数即可。backward函数属于torch.autograd函数库,在深度学习过程中进行反向传播,计算输出变量关于输入变量的梯度。最后要做的事情就是更新神经网络的参数,最简单的规则就是随机梯度下降,公式如下:weight=weight-learningrate×gradient当然,还有很多不同的更新规则,类似于SGD、Adam、RMSProp等,为了让这些可行,PyTorch建立了一个torch.optim包,调用它可以实现上述任意一种优化器。实践任务2-全连接神经网络模型搭建

4反向传播与参数更新#创建优化器

importtorch.optimasoptim

optimizer=optim.SGD(model.parameters(),lr=0.01)#lr代表学习率

criterion=nn.CrossEntropyLoss()

#在训练过程中

image=images[:2]

l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论