PyTorch复现网络模型VGG

VGG

  1. 原论文地址:https://arxiv.org/abs/1409.1556
  2. VGGVisual Geometry Group(视觉几何组)的缩写,它是一个在计算机视觉领域中非常有影响力的研究团队,主要隶属于牛津大学的工程系和科学系。VGG以其对卷积神经网络(Convolutional Neural Networks, CNNs)结构的研究而闻名,特别是在ILSVRCImageNet Large Scale Visual Recognition Challenge)竞赛中取得了显著的成绩。
    VGG网络是VGG团队提出的一系列深度卷积神经网络模型,其中最著名的是VGG-16VGG-19。这些模型以其简洁的架构和强大的性能而受到广泛关注。VGG网络的主要特点包括:
    (1)使用小尺寸的卷积核(3x3)和最大池化层(2x2)来构建深度网络。
    (2)通过堆叠多个小卷积核来模拟大尺寸卷积核的感受野,同时减少参数数量。
    (3)在整个网络中保持卷积核尺寸和步长的一致性,使得网络结构更加规整。
    (4)使用多个全连接层进行分类任务的输出。
    VGG网络的性能在2014年当时是非常出色的,成为了计算机视觉任务中的基准模型之一。虽然现在有一些更先进的网络架构(如ResNetDenseNet等)已经超越了VGG在某些方面的性能,但VGG仍然是一个值得学习和了解的经典模型。

感受野

(1)感受野(Receptive Field)是卷积神经网络(Convolutional Neural Networks, CNNs)中的一个重要概念,它指的是网络内部的不同位置的神经元对原图像的感受范围的大小。在卷积神经网络中,每个神经元都只与输入数据的一个局部区域相连,这个局部区域就是该神经元的感受野。随着网络层次的加深,每个神经元对于输入数据的感受野会逐渐扩大,从而能够提取更加抽象和全局的特征。
(2) 感受野的大小可以通过计算得到,它与卷积核的大小、步长(stride)和填充(padding)等超参数有关。在一般的卷积神经网络中,感受野的大小会随着卷积层的加深而指数级增长。因此,深层卷积神经网络中的神经元可以具有非常大的感受野,能够覆盖输入图像的大部分区域甚至整个图像。
在这里插入图片描述

VGG网络结构

  1. 论文中介绍,从A-E,分别有11、11、13、16、16、19层,用的比较多的是VGG-16模型和VGG-19模型。
  2. VGG-16模型包括13层卷积层和3层全连接层。
    在这里插入图片描述
  3. 视频中截取的模型结构图
    在这里插入图片描述
  4. 根据论文画出网络模型图,13个卷积层和3个全连接层。
    在这里插入图片描述

网络模型复现代码

# 定义训练网络 VGG-16
import torch
from torch import nn
from torch.nn import functional as F
from torchinfo import summaryclass VGG16(nn.Module):def __init__(self):super().__init__()# 定义网络结构# conv1self.conv1 = nn.Conv2d(3, 64, 3, padding=1)self.conv2 = nn.Conv2d(64, 64, 3, padding=1)self.pool1 = nn.MaxPool2d(2)# conv2self.conv3 = nn.Conv2d(64, 128, 3, padding=1)self.conv4 = nn.Conv2d(128, 128, 3, padding=1)self.pool2 = nn.MaxPool2d(2)# conv3self.conv5 = nn.Conv2d(128, 256, 3, padding=1)self.conv6 = nn.Conv2d(256, 256, 3, padding=1)self.conv7 = nn.Conv2d(256, 256, 3, padding=1)self.pool3 = nn.MaxPool2d(2)# conv4self.conv8 = nn.Conv2d(256, 512, 3, padding=1)self.conv9 = nn.Conv2d(512, 512, 3, padding=1)self.conv10 = nn.Conv2d(512, 512, 3, padding=1)self.pool4 = nn.MaxPool2d(2)# conv5self.conv11 = nn.Conv2d(512, 512, 3, padding=1)self.conv12 = nn.Conv2d(512, 512, 3, padding=1)self.conv13 = nn.Conv2d(512, 512, 3, padding=1)self.pool5 = nn.MaxPool2d(2)# fc1self.lr1 = nn.Linear(7 * 7 * 512, 4096)# fc2self.lr2 = nn.Linear(4096, 4096)# fc3self.lr3 = nn.Linear(4096, 1000)def forward(self, x):x = F.relu(self.conv1(x))x = self.pool1(F.relu(self.conv2(x)))x = F.relu(self.conv3(x))x = self.pool2(F.relu(self.conv4(x)))x = F.relu(self.conv5(x))x = F.relu(self.conv6(x))x = self.pool3(F.relu(self.conv7(x)))x = F.relu(self.conv8(x))x = F.relu(self.conv9(x))x = self.pool4(F.relu(self.conv10(x)))x = F.relu(self.conv11(x))x = F.relu(self.conv12(x))x = self.pool5(F.relu(self.conv13(x)))x = x.view(-1, 7 * 7 * 512)  # 铺平x = F.relu(self.lr1(F.dropout(x, p=0.5)))x = F.relu(self.lr2(F.dropout(x, p=0.5)))output = F.softmax(self.lr3(x), dim=1)vgg = VGG16()
# 网络结构可视化
summary(vgg, input_size=(10, 3, 224, 224))
  1. Pycharm运行输出结果,可以可视化VGG的网络结构和运行信息。
    在这里插入图片描述
  2. 代码仓库:deeplearning

网络结构可视化torchinfo

  1. 介绍
    torchinfo是一个用于PyTorch模型信息打印的Python包。它提供了一种简单而快速的方法来打印PyTorch模型的参数数量、计算图和内存使用情况等有用的信息,从而帮助深度学习开发人员更好地理解和优化他们的模型。具体来说,torchinfo可以用于打印网络的每一层尺寸等信息,使得开发人员能够更清晰地了解模型的结构和参数。
    例如,使用torchinfo库的summary函数,可以轻松地打印出模型的结构信息,包括每一层的名称、类型、输出形状和参数数量等。这对于调试模型、优化模型结构以及进行模型剪枝等操作都非常有帮助。
    总的来说,torchinfo是一个非常实用的工具,可以帮助PyTorch开发人员更好地理解和优化他们的模型。
    ——【文心一言】
  2. 安装:conda install -c conda-forge torchinfo (或pip install torchinfo

参考

  1. 使用Pytorch复现经典网络架构VGG_哔哩哔哩_bilibili
  2. PyTorch复现网络模型VGG

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3_基础使用

vue2的选项式与vue3的组合式区别: 选项式:vue2中数据与方法计算属性等等,针对一个数据的处理在不同的配置中,当业务复杂时很难维护,修改起来也不好查找。 vue3的组合式:将针对数据的方法计算属性等等放在一…

FPGA高端项目:Xilinx Zynq7020系列FPGA 多路视频缩放拼接 工程解决方案 提供4套工程源码+技术支持

目录 1、前言版本更新说明给读者的一封信FPGA就业高端项目培训计划免责声明 2、相关方案推荐我这里已有的FPGA图像缩放方案我已有的FPGA视频拼接叠加融合方案本方案的Xilinx Kintex7系列FPGA上的ov5640版本本方案的Xilinx Kintex7系列FPGA上的HDMI版本本方案的Xilinx Artix7系列…

深度解读 BigANN 2023 四大赛题,向量搜索还有更好的解决方案?

近年来,向量搜索大赛 BigANN 一直是行业关注的焦点。原因在于,BigANN 不仅是在向量搜索领域具有强大影响力的比赛,开发者在赛后贡献出的相关解决方案更是行业进步与发展的重要动力。 向量检索大赛 BigANN 旨在提升大规模 ANN 的研究创新和生产…

Django模型(八)

一、修改数据 先获取对象,通过对象属性更新数据,再保存 (更新单一数据)通过QuerySet的update函数更新数据 (更新多条数据) #单条记录修改 save c = Cook.objects.get(pk=1) c.name = 安妮 c.save()# 更新多个值 update Cook.objects.filter(sect=粤菜).update(level=5)1.1、…

Methodot低代码实战教程(一)——熟悉可视化Echart组件

一、产品介绍: Methodot是行云创新旗下一款面向研发使用的一站式云原生开发及应用托管平台,产品内有大量开箱即用的服务和开发工具,例如: 支持开发团队进行微服务架构设计(例如一个袜子商店管理系统)&…

win11安装MySql5.7

1、下载 打开下载链接:MySQL :: Download MySQL Installer 2、安装 2.1、安装界面 2.2、选择自定义安装 2.3、根据自己系统的位数进行选择是X64还是X86 2.4、选择安装路径 2.5、继续下一步 2.6、选择服务器专用,端口是3306 2.7、设置密码 2.8、设置服…

Python系列-字典

🌈个人主页: 会编程的果子君 ​💫个人格言:“成为自己未来的主人~” ​ 目录 ​ 字典是什么 创建字典 查找key 新增/修改元素 删除元素 遍历字典元素 取出所有的key和value 合成的key类型 ​编辑 小结 字典是什么 字典是一种存储键值对的结…

开箱即用的Linux系统

经常会遇到这样的场景,临时需要演示一下linux环境,安装虚拟机耗时耗资源,如果有一个开箱即用的linux,而且还能包括主流的linux环境就好了。instantbox 是一个这样的项目,几秒内启动一个主流的 Linux 系统,支…

船员投保的数学模型(MATLAB求解)

1.问题描述 劳动工伤事故,即我们平时所说的“工伤事故”,也称职业伤害,是指劳动者在生产岗位上,从事与生产劳动有关的工作中发生的人身伤害事故、急性中毒事故或职业病。船员劳动工伤事故是指船员在船舶生产岗位上,从…

第七讲_JavaScript的Iterator和Generator

JavaScript的Iterator和Generator 1. Iterator1.2 for-of语法糖 2. Generator2.1 定义一个生成器函数2.2 常用的方法2.3 基本用法2.4 传参的用法2.5 异步的用法 1. Iterator ES6 中,默认的 Iterator 接口部署在数据结构的 Symbol.iterator 属性。一个数据结构只要拥…

字节跳动新一代云原生消息队列实践

作者:火山引擎云原生计算研发工程师|雷丽媛 上文我们了解了在字节跳动内部业务快速增长的推动下,经典消息队列 Kafka 的劣势开始逐渐暴露,在弹性、规模、成本及运维方面都无法满足业务需求。因此字节消息队列团队研发了计算存储分…

RISC-V指令集之RV32I

RISC-V指令集之RV32I 1 RV32I的寄存器2 RV32I的指令2.1 算术运算指令2.2 逻辑运算指令2.3 移位运算指令2.4 内存读写指令2.5 分支与跳转指令 本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。 1 RV32I的寄存器 如下图,列出了RV32I 寄存器…

力扣hot100 数据流的中位数 大小根堆

Problem: 295. 数据流的中位数 文章目录 思路复杂度💖 Code 思路 👨‍🏫 参考 大根堆维护较小值(堆顶即中位数),小根堆维护较大值(堆顶可能是中位数之一)维护小堆长度较长&#x…

idea搭建spring5.3.x源码环境

1.写在前面的话 碰到了不少想阅读或者学习spring源码的同学,但是第一步搭建这个源码阅读环境就能难倒了一大批人。下面我就以spring5.3.x这个源码分支,来具体演示一下搭建过程。 2. 下载源码 下载源码这一步,说实话,由于某些原…

grafana安装DevOpsProdigy KubeGraf 1.5.2

安装DevOpsProdigy KubeGraf需要安装kube-state-metrics 官方地址:https://github.com/kubernetes/kube-state-metrics/tree/release-2.10/examples/standard 查看k8s版本和kube-state-metrics对应版本: [rootmaster1 kube-state-metrics]# ll 总用量 …

并查集(高阶数据结构)

目录 一、并查集的原理 二、并查集的实现 2.1 并查集的初始化 2.2 查找元素所在的集合 2.3 判断两个元素是否在同一个集合 2.4 合并两个元素所在的集合 2.5 获取并查集中集合的个数 2.6 并查集的路径压缩 2.7 元素的编号问题 三、并查集题目 3.1 省份的数量 3.2 等…

R-kknn包-类别插值可视化绘制

前面的推文我们介绍了使用scikit-learn结合分类散点数据,构建机器学习分类模型并将模型结果可视化展示,具体链接如下: 机器学习和可视化还能一起这样用?Python教你全搞定。今天这篇推文,我们就使用R语言的kknn包进行类…

【2023地理设计组一等奖】基于机器学习的地下水仿真与时空分析

作品介绍 1 设计思想 1.1 作品背景 华北平原是我国最重要的粮棉产地之一,然而近年来农业的低效用水以及过度压采正逐步加剧其地下水资源的紧张性,为经济可持续发展带来重大风险。而地下水动态变化与人为干预、全球气候波动呈现出高度相关性,因此,地下水的仿真模拟对保障粮…

JMeter 下载、安装、启动

JMeter安装部署依赖Java环境,所以首先得安装JDK。 JDK下载JDK环境变量配置 ① 新建系统环境变量JAVA_HOME ② 编辑系统变量Path ③ 新建系统变量CLASSPATH变量 JMeter下载安装 Apache JMeter - Apache JMeter™ JMeter安装部署依赖Java环境,所以首…

sql注入之GETSHELL

2024.2.1 GETSHELL 利用SQL注入获取MYSQL数据库权限的要求: 文件读写基本要求: 是root用户最高权限 知道网站的绝对路径 文件读写注入的原理: 利用文件的读写权限进行注入,它可以写入一句话木马,也可以读取系统文件的敏感信息 文件读写…