PyTorch复现网络模型VGG

2024-01-29 14:04
文章标签 模型 网络 pytorch 复现 vgg

本文主要是介绍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

这篇关于PyTorch复现网络模型VGG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

【Altium】查找PCB上未连接的网络

【更多软件使用问题请点击亿道电子官方网站】 1、文档目标: PCB设计后期检查中找出没有连接的网络 应用场景:PCB设计后期,需要检查是否所有网络都已连接布线。虽然未连接的网络会有飞线显示,但是由于布线后期整板布线密度较高,虚连,断连的网络用肉眼难以轻易发现。用DRC检查也可以找出未连接的网络,如果PCB中DRC问题较多,查找起来就不是很方便。使用PCB Filter面板来达成目的相比DRC

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

通信系统网络架构_2.广域网网络架构

1.概述          通俗来讲,广域网是将分布于相比局域网络更广区域的计算机设备联接起来的网络。广域网由通信子网于资源子网组成。通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网构建,将分布在不同地区的局域网或计算机系统互连起来,实现资源子网的共享。 2.网络组成          广域网属于多级网络,通常由骨干网、分布网、接入网组成。在网络规模较小时,可仅由骨干网和接入网组成

Toolbar+DrawerLayout使用详情结合网络各大神

最近也想搞下toolbar+drawerlayout的使用。结合网络上各大神的杰作,我把大部分的内容效果都完成了遍。现在记录下各个功能效果的实现以及一些细节注意点。 这图弹出两个菜单内容都是仿QQ界面的选项。左边一个是drawerlayout的弹窗。右边是toolbar的popup弹窗。 开始实现步骤详情: 1.创建toolbar布局跟drawerlayout布局 <?xml vers

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

智能客服到个人助理,国内AI大模型如何改变我们的生活?

引言 随着人工智能(AI)技术的高速发展,AI大模型越来越多地出现在我们的日常生活和工作中。国内的AI大模型在过去几年里取得了显著的进展,不少独创的技术点和实际应用令人瞩目。 那么,国内的AI大模型有哪些独创的技术点?它们在实际应用中又有哪些出色表现呢?此外,普通人又该如何利用这些大模型提升工作和生活的质量和效率呢?本文将为你一一解析。 一、国内AI大模型的独创技术点 多模态学习 多

基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别

转发来源:https://swift.ctolib.com/ooooverflow-chinese-ocr.html chinese-ocr 基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别 环境部署 sh setup.sh 使用环境: python 3.6 + tensorflow 1.10 +pytorch 0.4.1 注:CPU环境

OpenCompass:大模型测评工具

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型数据侧总结大模型token等基本概念及参数和内存的关系大模型应用开发-华为大模型生态规划从零开始的LLaMA-Factor

模型压缩综述

https://www.cnblogs.com/shixiangwan/p/9015010.html