[DeeplearningAI笔记]卷积神经网络2.5-2.7 Network in Network/1*1卷积/Inception网络/GoogleNet

4.2深度卷积网络

觉得有用的话,欢迎一起讨论相互学习~

我的微博我的github我的B站

吴恩达老师课程原地址
参考文献
Inception网络 --Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[J]. 2014:1-9.

2.5网络中的网络与1*1卷积

Network in Network

  • 在架构内容设计方面,一个比较有帮助的想法是使用11的卷积。输入一张661的单通道图片,使用一个111的小卷积核。结果相当于把原有的像素对应乘以2.
  • 对于单通道的图片看不出什么效果,但是如果是一张6632的图片,卷积核大小为1132的具有32个通道的卷积核,卷积效果不错。
    • 具体而言,即是遍历原始图片的36个单元格,计算左图中32个通道中的数字和卷积核中32个数字的元素的智能乘积(对应位置的乘积加和)。然后应用ReLU非线性函数。
    • 11也被称为Network in Network

示例

  • 假设输入层的大小为2828192的192个通道的特征图,想要使192个通道的特征图压缩为具有32个通道的特征图,则可以使用32个11192的卷积核对这个特征图进行卷积操作。具体而言,一般只需要设置卷积核的长和宽而无需设置卷积核的通道数维度。因为一般而言卷积核的第三个维度是和原始特征图的通道数量保持一致的。

2.6谷歌Inception网络简介

问题引入

  • 当构建卷积层时,你要决定卷积核的大小究竟是13还是33或者是55.并且什么时候加入池化层。这些都是十分繁琐而纠结的。
  • 而Inception网络的作用就是代替你来做决定以构建网络的结构。虽然网络结构因此变得更加复杂,但是网络变现却非常好。

Inception网络原理

  • Inception网络可以代替人工来确定卷积层中卷积核的类型,或者确定是否需要创建卷积层或池化层。
  • 假设输入为2828192的具有192个通道的图片。以下卷积都是通过"SAME"方式进行卷积。使用64个11的卷积核得到的特征图大小为282864,如果使用128个33的卷积核进行卷积,得到的特征图的大小为2828128.如果使用32个55的卷积核进行卷积,得到的特征图的大小为282832.此时将三个特征图堆叠在一起。
  • 当然你也可以直接使用最大值池化层,输出的结果为282832。也将结果特征图堆叠在一起。为了使所有的特征图长和宽一致,需要对池化层也使用Padding=“SAME”操作。
  • 此时,这个堆叠起来的2828256的结构被称为"Inception模块"

  • 基本思想是Incetion 网络不需要人为决定使用哪个过滤器,或者是否需要池化,而是由网络自行决定确定这些参数。你可以给模块增加这些参数,然后把这些输出连接起来,让网络自己学习它需要什么样的参数,采用哪些过滤器组合。

Inception网络计算成本

  • 假设Inception网络的输入是一个2828192的具有192个通道的特征图片,使用32个55的卷积核以Padding="SAME"的方式进行卷积,则输出为282832
  • 使用了32个过滤器,每个过滤器的大小为55192因为输入图片的信道数量为192。所以对于输出特征图中的282832个节点每一个都需要进行55192次乘法运算,即每个输出值所需的乘法运算次数乘以输出值的个数。

28283255192=120M=1.2亿

使用Network in Network瓶颈层降低网络的计算成本

  • 使用16个11的卷积核把输入值从192个信道减少到16个信道。然后对于这个小的特征图,使用32个5516的卷积核得到最终输出。
  • 注意这种方式下得到的282832的特征图和上文中的特征图的维度一致。
  • 目的就是将左边较大的特征图压缩成较小的中间层,这个中间层有时被称为瓶颈层(bottleneck layer)
  • 此时瓶颈层所有神经元的计算成本为

28281611192=2.4M=240W

  • 第二个卷积层得计算成本为

2828325516=10M=1000W

  • 所以这两层的计算成本之和为

240W+1000W=1240W

这使得原来的120M的计算成本降低成大约原来的10分之1即12.4M,所需的加法次数与乘法次数相近,所以只统计了乘法运算的次数。

  • 事实证明,只要合理构建瓶颈层,你既可以显著的缩小表示层规模又不会降低网络性能,从而大大节省了计算

2.7Inception网络GoogleNet

  • 所有卷积和池化操作均使用Padding="SAME"卷积/池化方式
  • Inception网络即是Inception模块的重复拼接,其中插有额外的有池化层来改变模型的宽度和高度。

  • Inception网络是一个可调整的网络,其可以根据需要只是用网络中的部分节点进行预测和分类。即在网络中有全连接层和Sofxmax分类分支用以进行分类。
posted @   WUST许志伟  阅读(567)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示