Pytorch卷积神经网络经典Backbone(骨干网络)——(VGG)

2023-11-05 02:30

本文主要是介绍Pytorch卷积神经网络经典Backbone(骨干网络)——(VGG),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VGG网络架构:
VGG16网络由13层卷积层+3层全连接层构成
在这里插入图片描述

1.1改进:

1.更小的卷积核,对比AlexNet,VGG网络使用的卷积核大小不超过33,这种结构相比于大卷积核有一个优点,就是两个33的卷积核堆叠对于原图提取特征的感受野(特征图一个像素融合了输入多少像素的信息决定了感受野的大小)相当于一个55的卷积核(如图),在同等感受野的条件下,两个33卷积之间加入激活函数,其非线性能力比单个5*5卷积要强。
在这里插入图片描述
2.更深的网络结构,相比于AlexNet只有5层卷积层,VGG系列加深了网络的深度,更深的结构有助于网络提取图像中更复杂的语义信息。

1.2pytorch复现VGG19

#全连接层分类:self.classifier = nn.Sequential(nn.Linear(512 * 7 * 7, 4096),nn.ReLU(inplace = True),nn.Dropout(),nn.Linear(4096,4096),nn.ReLU(inplace = True),nn.Dropout(),nn.Linear(4096,num_classes),)#前向传播def forward(self, x):x = self.features(x)x = x.view(x.size(0), -1)x = self.classifier(x)return x

1.2.1 小Tips:
当网络的结构重复时,使用for循环构造避免代码形式冗余
将不同功能的网络各自封装到一个大的Sequential模块中,结构分明
卷积操作输出尺寸计算公式:Out=(In-Kernel+2Padding)/Stride+1 (Kernel:卷积核尺寸,Stride:步长,Padding:边界填充) 若要保证输出尺寸和原尺寸一致,Padding可以设置为:Padding = (kernel-1)/2)
池化操作输出尺寸计算公式同卷积操作一致
在实际深度学习框架实现卷积和全连接的计算中,本质都是矩阵运算:
若输入的特征图深度是N,输出特征图深度是M,则卷积核的维度是:NxMxKxK(K为卷积核大小)。因此全卷积网络对输入图像的尺寸没有要求。
全连接层的尺寸和输入的特征尺寸相关(将特征图展平成为一维向量),若输入的特征向量是1xN,输出是1xM,则全连接层的维度是:MxN。

1.2.2 打印网络信息:
使用torch.summary输出网络架构:

vgg19 = VGG19()#print(vgg19) #输出网络的架构
summary(vgg19, input_size = [(3, 224, 224)]) #输出网络架构,每一层的输出特征尺寸,及网络参数情况

输出网络每一层的尺寸:

for param in vgg19.parameters(): # 输出每一层网络的尺寸print(param.size())batch_size = 16
input = torch.randn(batch_size, 3, 224, 224) #构建一个随机数据,模拟一个batch_size
output = vgg19(input)
print(output.shape)  # torch.Size([16, 1000])

摘抄于:https://mp.weixin.qq.com/s?__biz=MzI4MDYzNzg4Mw==&mid=2247549661&idx=2&sn=da8151219635919414e7181acc27926e&chksm=ebb73a09dcc0b31fcdc05e043c087f467225129a0ba7440e60d08399f5c55afa1c787fa61e9c&scene=27

这篇关于Pytorch卷积神经网络经典Backbone(骨干网络)——(VGG)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/346784

相关文章

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

pytorch之torch.flatten()和torch.nn.Flatten()的用法

《pytorch之torch.flatten()和torch.nn.Flatten()的用法》:本文主要介绍pytorch之torch.flatten()和torch.nn.Flatten()的用... 目录torch.flatten()和torch.nn.Flatten()的用法下面举例说明总结torch

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对