Pytorch 深度学习实践Lecture_11 Advanced CNN

up主 刘二大人

视频链接 刘二大人的个人空间_哔哩哔哩_Bilibili

GoogLeNet

如下图所示, 当层数过多时, 为了减少代码冗余即将设计中重复出现的层定义成一个类。

GoogLeNet模型中将这样的模块称之为Inception Module.

Pytorch 深度学习实践Lecture_11 Advanced CNN_第1张图片

 Inception Module

如下图所示为Inception Module设计, 最终这四条路径的输出,按照通道的顺序进行拼接,进而进行下一步。

Inception Module 进一步解读参考如下博客:

        【模型解读】Inception结构,你看懂了吗 - 知乎

 Pytorch 深度学习实践Lecture_11 Advanced CNN_第2张图片

1*1卷积(Network in Network)

对于多通道输入数据, 每个通道配置一个1*1 卷积核, 输出数据W/H不变, 输出通道数根据卷积核个数变化而变化。

如 (C=Channel=通道数):

        输入数据 3(C) * W * H , 经过1个 3(C)* 1*1 卷积核, 输出为1(C) * W * H;

        输入数据 3(C) * W * H , 经过10个 3(C) * 1*1 卷积核, 输出为10(C) * W * H

得出:

        1*1 卷积核Channel = 输入数据Channel;

        输出数据Channel = C*1*1卷积核的个数

Pytorch 深度学习实践Lecture_11 Advanced CNN_第3张图片

 

1*1 卷积的作用

  • 减少计算量
  • 改变通道数, 从而达到升维/降维的作用

1) 减少计算量

如下示例中,通过1*1 卷积计算量降低1/10 (假设有padding,28个元素都参与运算)
Pytorch 深度学习实践Lecture_11 Advanced CNN_第4张图片

2) 改变通道数

借鉴如下博客:

        一文读懂卷积神经网络中的1x1卷积核 - 知乎

你可能感兴趣的:(Pytorch深度学习实践,pytorch,人工智能,python)