当前位置: 首页 > news >正文

CS231n2017-Lecture9经典CNN架构笔记

AlexNet:

首先回顾一下LeNet-5,该网络结构为[CONV-POOL-CONV-POOL-FC-FC],卷积层使用3\times35\times5的卷积核,步长为1,;池化层使用2\times2的size,步长为2

AlexNet的结构:

[CONV1-MAX POOL1-NORM1-CONV2-MAX POOL2-NORM2-CONV3-CONV4-CONV5-MAX POOL3-FC5-FC7-FC8]

结构如图:

在图中分成上下两个部分,是因为当时的GPU容量太小,需要分成两个GPU来完成

VGG:

相对于AlexNet时候用更小的卷积核,层数也更深,有16层和19层两种。卷积核只使用3\times3,padding=1,POOLING为2\times2,stride=2

使用小卷积核的原因:

第一次卷积核感受原图的size是3\times3,第二次卷积就是5\times5(因为边界会多感受一格),堆叠三层就变成了7\times7的感受野

多个小卷积层比一个大卷积层有更多层的非线性函数,使得判决函数更加具有判决性

3个3\times3的卷积层参数比一个7\times7的大卷积层具有更少的参数,比如假设每个卷积层的输入和输出的size都是C\times C,则3个3\times3的卷积层的参数个数就是3\times(3\times3\times C^2) = 27C^2,而7\times7的卷积层的参数个数是7\times7\times C^2= 49C^2,要更多

GoogLeNet:

网络有22层,比VGG更深

为了高效的计算,使用inception模块

不使用全连接层

Inception Module:

是一种设计得比较好的局域网络拓补结构,如图所示

这种结构对上一层的输入分别进行不同size卷积核的卷积以及pooling,通过分别设定不同的padding和步长,保证这几个卷积以及pooling的输出size一致,然后把所有的这些输出在深度上串叠在一起

这种结构的一个问题就是计算量会大大增加,且由于pooling会保持原输入的深度,导致模块的最终输出的深度一定会增加

因此,解决办法是在进行卷积核pooling操作前加入一个bottleneck层,该层使用1\times1的卷积,在保留原输入的size的同时,减小其深度(只要kernel的个数小于原输入的深度即可),修正后的模块结构如图所示

这样一来,我们既减小了输出的深度,又减少了计算量

完整结构:

分为三部分,分别是主干网,inception模块堆叠,分类输出层

如图所示:

下面还有两个小辅助网络,其在网络较浅的部分作出分类预测,在训练期间,它们的损失会加权(0.3)到网络总损失中,在预测的时候,辅助网络不再使用。这样的目的是,网络中间层产生的特征应该是区别性较强的,通过添加连接到这些中间层的辅助分类器,我们期望在分类器的较低阶段中鼓励区分,增加回传的梯度信号,并提供额外的正则化

ResNet:

有152层

核心思想:

通过使用多个有参层来学习输入与输入输出之间的残差映射(residual mapping),从而保证在深层网络的时候,其所接受到的输入不会比浅层网络的更差,保证了即使在训练不足的情况下,深层网络至少能够有浅层网络的性能

残差学习(Residual Learning):

若将输入设为X,将某一网络层对其的映射设为H,那么该层的输出应是H(X),通常的CNN会直接通过训练学习得出H的表达式,而直接得到X到H(X)的映射

而残差学习是想要使用多个有参网络层来学习输入到输入、输出间的残差H(X)-X的映射,然后再在结果加上X,从而得到直接映射

自身映射(Identity Mapping):

自身映射就是X映射到X不变,由于残差映射最后的结果会直接加上X的自身映射,从而保证其输出最坏也就是完全不做映射,因此有参网络层就能够更好地去学习残差映射

如果残差映射出来的通道数和X的通道数不同时,我们需要特别去设计X的自身映射,使其通道数匹配,通常有两种方法:

1.简单地将X相对于Y缺失的通道直接补0

2.通过使用1\times1的卷积作用于X而修改其通道数

完整结构:

如图所示

ResNet也会使用类似于GoogLeNet的bottleneck层来提高计算效率

http://www.dtcms.com/a/310759.html

相关文章:

  • Hqst集成千兆贴片 RJ45 在产品中的应用解析
  • 【模型细节】FPN经典网络模型 (Feature Pyramid Networks)详解及其变形优化
  • 【王阳明代数讲义】明明德数分析王阳明代数系统的结构大纲
  • [特殊字符] 【JAVA进阶】StringBuilder全方位解析:从使用到源码,一文搞定!
  • C4画图实战案例分享
  • 体育直播系统搭建:核心数据详细接入指南
  • Lesson 29 Taxi!
  • Codes项目管理软件:凭什么重新定义 SaaS?
  • Java函数式编程之【Stream终止操作】【下】【三】【收集操作collect()与分组分区】【下游收集器】
  • 记一次Windwos非常离谱的系统错误,IPF错误,程序构建卡顿,程序启动卡顿。。。
  • 特征工程 --- 特征提取
  • <1> ES内存泄漏问题深度解析:从Scroll查询到Mapped Buffer异常
  • WAIC 2025 聚焦“智能时代”,AI在内容、硬件与交互上的多线突破
  • IFC 转换为 UG 的技术指南及迪威模型网在线转换推荐
  • 签名分发平台怎么看我的订单
  • 从零到一:Linux内核MMU启动与虚拟内存体系建立全流程详解
  • 代码随想录算法训练营三十三天|动态规划part06
  • [Linux入门] Linux 防火墙技术入门:从 iptables 到 nftables
  • 一文了解 `package.json` 和 `package-lock.json`文件
  • Mysql group by
  • 查看主板信息的3种方法
  • 修改DeepSeek翻译得不对的V语言字符串文本排序程序
  • 【ESP32 IDF】LVGL驱动触摸屏
  • AI Agent 视角:可执行程序的二进制格式,是一场「结构化语言」与「智能解析」的双向奔赴
  • 知识图谱的学习
  • 脚本统计MongoDB集合表数据量
  • 思途JSP学习 0801
  • 函数 dirfd 详解
  • 26考研|高等代数:欧几里得空间
  • TwinCAT3示例项目1