CNN-day7-经典神经网络VGG

news/2025/2/11 14:56:43/

day8-经典神经网络VGG

VGG的亮点在于它通过堆叠多个卷积层,以小的卷积核和池化层的方式来增加网络深度,从而实现高精度的图像识别。这种方法可以有效地捕获图像中的高级特征,并通过不断拟合训练数据来提高识别准确率。

1 小卷积作用

某层feature map上的元素看到前面不同层上的区域范围是不同的,通常在不特殊指定的情况下,感受野指的是看到输入图像上的区域。

  • 网络层数增加(非线性表达能力增加)

  • 网络参数数量减少

2 VGG版本

#configure
cfgs = {"A": [64, "M", 128, "M", 256, 256, "M", 512, 512, "M", 512, 512, "M"],#VGG11"B": [64, 64, "M", 128, 128, "M", 256, 256, "M", 512, 512, "M", 512, 512, "M"],#VGG13"D": [64, 64, "M", 128, 128, "M", 256, 256, 256, "M", 512, 512, 512, "M", 512, 512, 512, "M"],#VGG16,一般使用这个"E": [64, 64, "M", 128, 128, "M", 256, 256, 256, 256, "M", 512, 512, 512, 512, "M", 512, 512, 512, 512, "M"],#VGG19
}

self.classifier = nn.Sequential(nn.Linear(512 * 7 * 7, 4096),nn.ReLU(True),nn.Dropout(p=dropout),nn.Linear(4096, 4096),nn.ReLU(True),nn.Dropout(p=dropout),nn.Linear(4096, num_classes),)

3 存在的问题

1.网络架构非常大,需要大量的计算资源来训练。如要在较小设备上使用VGG会发现它非常慢并且可能无法获得足够的性能

2.网络结构非常深,可能会导致梯度消失或梯度爆炸。(在非常深的神经网络中,梯度在传播过程中可能会变得非常小或者非常大,导致模型无法正常训练)

4 VGG网络测试

将全连接替换为卷积,从而适应不同输入大小的图。

  • 第1个全连接层转换为7×7的卷积层

  • 后两个全连接层转换为1×1的卷积层

  • 得到一个空间维度可变的多通道的概率图(class score map),空间维度求和平均作为预测概率

5 VGG总体特征

与AlexNet同为链式结构,而且更加简单

  • 结构非常简洁,整个网络使用了同样大小的卷积核尺寸(3×3)和最大池化尺寸(2×2)

  • 几个小滤波器(3×3)卷积层的组合比一个大滤波器(5×5或7×7)卷积层好

  • 层数更深更宽(11层、13层、16层、19层)

  • 池化核变小且为偶数

  • 验证了通过不断加深网络结构可以提升性能


http://www.ppmy.cn/news/1571179.html

相关文章

electron.vite 项目创建以及better-sqlite3数据库使用

1.安装electron.vite npm create quick-start/electronlatest中文官网:https://cn.electron-vite.org/ 2. 安装项目依赖 npm i3.修改 electron-builder 配置文件 appId: com.electron.app productName: text33 directories:buildResources: build files:- !**/.v…

RsAbC CTF解密工具

在 CTF(Capture The Flag)竞赛中,加密题是不可或缺的一部分,而 RSA 加密作为最常见的加密算法之一,常常出现在各类题目中。和大家分享一款我在 CTF 备赛过程中发现工具RsAbC,它能帮助我们解决基本RSA 加密相…

产品详情页中 品牌官网详情 对应后端的字段是 detail

文章目录 1、在这个Vue代码中,品牌官网详情 对应后端的字段是 detail2、品牌官网详情 功能相关的代码片段3、export const productSave (data: any) >4、ProductController5、ProductDto 类6、ProductApiService 1、在这个Vue代码中,品牌官网详情 对…

【推荐】爽,在 IDE 中做 LeetCode 题目的插件

大家好,我是 V 哥。 今天给大家推荐一款神器插件,废话不多说,马上开整。leetcode-editor 是一个可以在 IDE 中做 LeetCode 题目的插件仓库,以下是对该仓库的详细介绍: 来看一下这个神器是啥 基本信息 名称&#xff…

如何修改DNS解析?

DNS(域名系统)就像互联网的“电话簿”,负责将我们输入的网址转换为计算机能够理解的IP地址。如果DNS解析出现问题,访问网站就会受到影响。那我们该如何修改DNS解析呢?接下来,我们就来介绍一下这个话题。 为什么要修改DNS解析? 使用默认的…

JVM栈帧中|局部变量表、操作数栈、动态链接各自的任务是什么?

局部变量表和动态链接确实在栈帧中存在,用于存储方法的参数、局部变量和方法的动态链接信息(如常量池索引等),但这些并不等同于操作数栈。 让我们理清楚两者之间的区别和它们各自的作用。 🚀 栈帧和操作数栈的关系 1…

网络编程-day4-TPC之文件传输

服务器 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h> #include <semaphore.h> #includ…

c++ template-3

第 7 章 按值传递还是按引用传递 从一开始&#xff0c;C就提供了按值传递&#xff08;call-by-value&#xff09;和按引用传递&#xff08;call-by-reference&#xff09;两种参数传递方式&#xff0c;但是具体该怎么选择&#xff0c;有时并不容易确定&#xff1a;通常对复杂类…