VGG介绍及Pytorch实现

news/2024/4/27 20:42:00

VGG是一种经典的卷积神经网络架构,由牛津大学视觉几何组(Visual Geometry Group)提出。VGG以其简单而有效的设计而闻名,其核心思想是通过多层深度的卷积和池化层来逐渐提取图像特征,并且通过堆叠多个卷积层和池化层来增加网络的深度。VGG网络结构中主要采用3x3大小的卷积核和2x2大小的最大池化核,这种统一的设计使得网络架构非常规整,易于理解和实现。VGG网络共有多个版本,其中VGG16和VGG19是最为常用的两个版本,分别包含16和19个卷积层,以及若干个全连接层。虽然VGG相对于其他深度学习模型而言较为简单,但其在图像分类等任务上表现出色,成为了深度学习领域的经典模型之一。

这篇文章很简单,就是卷积块的堆叠, 注意力卷积的通道输入输出即可,没什么难度。

Pytorch代码

# Define VGG-16 and VGG-19.
import torchcfg = {'VGG-16': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512, 'M', 512, 512, 512, 'M'],'VGG-19': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, 512, 'M', 512, 512, 512, 512, 'M']
}# VGG-16 and VGG-19
class VGGNet(torch.nn.Module):def __init__(self, VGG_type, num_classes):super(VGGNet, self).__init__()self.features = self._make_layers(cfg[VGG_type])self.classifier = torch.nn.Linear(512, num_classes)def forward(self, x):out = self.features(x)out = out.view(out.size(0), -1)out = self.classifier(out)return outdef _make_layers(self, cfg):layers = []in_channels = 3for x in cfg:if x == 'M':  # MaxPool2dlayers += [torch.nn.MaxPool2d(kernel_size=2, stride=2)]else:layers += [torch.nn.Conv2d(in_channels, x, kernel_size=3, padding=1),torch.nn.BatchNorm2d(x),torch.nn.ReLU(inplace=True)]in_channels = xlayers += [torch.nn.AvgPool2d(kernel_size=1, stride=1)]return torch.nn.Sequential(*layers)  # The number of parameters is more than one.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/10978.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Redis 不再“开源”,对中国的影响及应对方案

Redis 不再“开源”,使用双许可证 3 月 20 号,Redis 的 CEO Rowan Trollope 在官网上宣布了《Redis 采用双源许可证》的消息。他表示,今后 Redis 的所有新版本都将使用开源代码可用的许可证,不再使用 BSD 协议,而是采用…

支持向量机(SVM)

文章目录 简介原理介绍损失因子核方法高斯核函数 简介 如果我们有两个数据,要让你画一根直线你需要怎么划分他们呢? 上面画了三根直线来划分它,那如果是高纬度呢? 怎么用高于三个维度的 超维度平面来区分这些呢? 原理介绍 我们用二维数据来介绍一下,因为区分二维数据的…

【LeetCode】升级打怪之路 Day 26:回溯算法 — 集合划分问题

今日题目: 698. 划分为k个相等的子集 | LeetCode473. 火柴拼正方形 | LeetCode 参考文章: 经典回溯算法:集合划分问题 目录 LC 698. 划分为k个相等的子集 【classic,有难度】数据预处理:计算 target基本回溯优化 1&…

学习几个地图组件(基于react)

去年开发时用的公司封装的地图组件,挺方便的,但是拓展性不强,所以看看有哪些优秀的开源地图组件吧 1、React Leaflet 介绍:开源的JavaScript库,用于在web上制作交互式地图,允许你使用React组件的方式在应…

Jenkins Pipeline中when的用法

目录 概述内置条件branchbuildingTagchangesetchangeRequestequalsexpressiontriggeredBytagenvironmentnotallOfanyOf 在进入 stage 的 agent 前评估 whenbeforeAgentbeforeInputbeforeOptions 示例单一条件、声明性流水线多条件、声明式管道嵌套条件(与前面的示例…

递归和递推的区别

目录 1、递推 2、递归 3、结言 递归 递推 1、递推 递推就是说从初值出发后一直运算到所需的结果。 ——从已知到未知。(从小到大) 举一个简单的例子: 每天能学习一个小时的编程,那么一个月之后可以学到三十小时的编程知识。…