神经网络与深度学习 课件19-微课-VGG的结构_第1页
神经网络与深度学习 课件19-微课-VGG的结构_第2页
神经网络与深度学习 课件19-微课-VGG的结构_第3页
神经网络与深度学习 课件19-微课-VGG的结构_第4页
神经网络与深度学习 课件19-微课-VGG的结构_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

VGG的结构张杲峰,刘刚,周庆国人民邮电出版社2025神经网络与深度学习(微课)内容概要VGG简介VGG的结构VGG的实现神经网络与深度学习2VGG简介牛津大学视觉几何组(VisualGeometryGroup,VGG)的西蒙尼杨(KarenSimonyan)和西塞曼(AndrewZisserman)在2014年提出。VGG模型结构简单、应用性强。其网络结构设计方法,为构建深度神经网络提供了方向。VGG的结构VGG的核心思想是通过使用小的卷积核,即采用3*3的卷积核,增加卷积神经网络的深度,从而提升卷积神经网络的表达能力。根据层数和层的配置的不同,VGG模型主要有5种不同的结构。6.1VGG的结构ABCDE11个带权层13个带权层16个带权层16个带权层19个带权层输入(224*224RGB图像)cov3-64

cov3-64cov3-64cov3-64cov3-64cov3-64cov3-64cov3-64cov3-64最大汇聚(maxpool)cov3-128

cov3-128cov3-128cov3-128cov3-128cov3-128cov3-128cov3-128cov3-128最大汇聚(maxpool)cov3-256cov3-256cov3-256cov3-256cov3-256cov3-256cov1-256cov3-256cov3-256cov3-256cov3-256cov3-256cov3-256cov3-256最大汇聚(maxpool)cov3-512cov3-512cov3-512cov3-512cov3-512cov3-512cov1-512cov3-512cov3-512cov3-512cov3-512cov3-512cov3-512cov3-512最大汇聚(maxpool)cov3-512cov3-512cov3-512cov3-512cov3-512cov3-512cov1-512cov3-512cov3-512cov3-512cov3-512cov3-512cov3-512cov3-512最大汇聚(maxpool)全连接层(FC-4096)全连接层(FC-4096)全连接层(FC-1000)softmaxVGG的结构根据包含可学习参数的层数不同,VGG模型一般命名为VGG-11、VGG-13、VGG-16和VGG-19,其中VGG-16和VGG-19更为常用。VGG-16拥有13个卷积层,卷积核大小均为3*3,输出特征映射从64到512个,5个最大汇聚层,3个全连接层,节点数分别为4096、4096和1000个。VGG-19比VGG-16多了3个卷积层,其他配置基本相同。VGG的结构由于层数深,可训练参数多,所以VGG模型规模很大。VGG模型参数数量(单位:百万)模型ABCDE参数数量133133134138144VGG的实现classVGG16(nn.Module):

def__init__(self,num_classes=10):super(VGG16,self).__init__()#声明16个层:layer1~layer13、fc、fc1、fc2

self.layer1=nn.Sequential(nn.Conv2d(3,64,kernel_size=3,stride=1,padding=1),nn.BatchNorm2d(64),nn.ReLU())

PyTorch的torch.nn

模块是构建和训练神经网络的核心模块,它提供了丰富的类和函数来定义和操作神经网络。nn.Module是所有自定义神经网络模型的基类。用户通常会从这个类派生自己的模型类,并在其中定义网络层结构以及前向传播函数。torch.nn

模块包含各类预定义层(Modules):包括各种类型的层组件,例如卷积层(nn.Conv1d,nn.Conv2d,nn.Conv3d)、全连接层(nn.Linear)、激活函数(nn.ReLU,nn.Sigmoid,nn.Tanh)等。torch.nn

模块还包含容器类:nn.Sequential:允许将多个层按顺序组合起来,形成简单的线性堆叠网络。nn.ModuleList和nn.ModuleDict:可以动态地存储和访问子模块,支持可变长度或命名的模块集合。torch.nn

模块还包含一系列用于衡量模型预测与真实标签之间差异的损失函数,例如均方误差损失(nn.MSELoss)、交叉熵损失(nn.CrossEntropyLoss)等。torch.nn

模块还包含nn.functional(通常简写为F),包含了许多可以直接作用于张量上的函数,它们实现了与层对象相同的功能,但不具有参数保存和更新的能力。例如,可以使用F.relu()直接进行ReLU操作,或者F.conv2d()进行卷积操作。模块还提供了一些常用的权重初始化策略,如nn.init.xavier_uniform_()和(nn.init.kaiming_uniform_()。VGG的实现self.layer2=nn.Sequential(nn.Conv2d(64,64,kernel_size=3,stride=1,padding=1),nn.BatchNorm2d(64),nn.ReLU(),

nn.MaxPool2d(kernel_size=2,stride=2))

self.layer3=nn.Sequential(nn.Conv2d(64,128,kernel_size=3,stride=1,padding=1),nn.BatchNorm2d(128),nn.ReLU())

####中间层略

BatchNorm2d:以一个batch为统计单位,在C(channel)维度上进行归一化。具体来说,对于每个batch的数据,计算其均值和方差,并使用这两个参数对数据进行归一化。然后,再通过可学习的参数γ和β进行缩放和平移。这个过程可以保证每一层的输入数据都具有相同的分布特征,从而使得神经网络训练更加稳定。VGG的实现

self.layer13=nn.Sequential(nn.Conv2d(512,512,kernel_size=3,stride=1,padding=1),nn.BatchNorm2d(512),nn.ReLU(),nn.MaxPool2d(kernel_size=2,stride=2))

self.fc=nn.Sequential(nn.Dropout(0.5),nn.Linear(7*7*512,4096),nn.ReLU())

self.fc1=nn.Sequential(nn.Dropout(0.5),nn.Linear(4096,4096),nn.ReLU())

self.fc2=nn.Sequential(nn.Linear(4096,num_classes))VGG的实现#定义前馈函数

defforward(self,x):out=self.layer1(x)out=self.layer2(out)out=self.layer3(out)out=self.layer4(out)out=self.layer5(out)out=self.layer6(out)out=self.layer7(out)out=self.layer8(out)out=self.layer9(out)out=self.layer10(out)out=self.layer11(out)out=self.layer12(out)out=self.layer13(out)out=out.reshape(out.size(0),-1)out=self.fc(out)out=self.fc1(out)out=self.fc2(out)

returnout问题Q:VGG的核心思想是什么?A:通过使用小的卷积核,即采用3*3的卷积核,增加卷积神经网络的深度,从而提升卷积神经网络的表达能力。Q:请补充第四层的实现。A:神经网

温馨提示

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

评论

0/150

提交评论