1×1卷积核理解

1*1的卷积核在NIN、Googlenet中被广泛使用,但其到底有什么作用也是一直困扰的问题,这里总结和归纳下在网上查到的自认为很合理的一些答案,包括1)跨通道的特征整合2)特征通道的升维和降维  3)减少卷积核参数(简化模型)

1 - 引入

  在我学习吴恩达老师Deeplearning.ai深度学习课程的时候,老师在第四讲卷积神经网络第二周深度卷积网络:实例探究的2.5节网络中的网络以及1×1卷积对1×1卷积做了较为详细且通俗易懂的解释。现自己做一下记录。

2 - 1×1卷积理解

假设当前输入张量维度为6×6×32,卷积核维度为1×1×32,取输入张量的某一个位置(如图黄色区域)与卷积核进行运算。实际上可以看到,如果把1×1×32卷积核看成是32个权重W,输入张量运算的1×1×32部分为输入x,那么每一个卷积操作相当于一个Wx过程,多个卷积核就是多个神经元,相当于一个全连接网络。

综上,可以将1×1卷积过程看成是将输入张量分为一个个输入为1×1×32的x,他们共享卷积核变量(对应全连接网络的权重)W的全连接网络。

3 - 1×1卷积核作用

3.1 - 放缩nc的大小

  通过控制卷积核的数量达到通道数大小的放缩。而池化层只能改变高度和宽度,无法改变通道数。

3.2 - 增加非线性

  如上所述,1×1卷积核的卷积过程相当于全连接层的计算过程,并且还加入了非线性激活函数,从而可以增加网络的非线性,使得网络可以表达更加复杂的特征。

3.3 - 减少参数

  在Inception Network中,由于需要进行较多的卷积运算,计算量很大,可以通过引入1×1确保效果的同时减少计算量。具体可以通过下面例子量化比较

3.3.1 - 不引入1×1卷积的卷积操作

  

3.3.2 - 引入1×1卷积的卷积操作

  

总共需要的计算量为(28×28×16)×(1×1×192)+(28×28×32)×(5×16×16)≈ 12.4 million,明显少于不引入1×1卷积的卷积过程的计算量。其本质我觉得可以理解成,通过1×1卷积操作提取出输入张量的重要特征(相当于降维),然后通过5×5卷积的计算量可以减少很多(减少的比引入1×1卷积所需额外的计算量多多了)。

原文地址:https://www.cnblogs.com/tianqizhi/p/9665436.html

时间: 2024-10-06 11:09:15

1×1卷积核理解的相关文章

[转][c++11]我理解的右值引用、移动语义和完美转发

c++中引入了右值引用和移动语义,可以避免无谓的复制,提高程序性能.有点难理解,于是花时间整理一下自己的理解. 左值.右值 C++中所有的值都必然属于左值.右值二者之一.左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象.所有的具名变量或者对象都是左值,而右值不具名.很难得到左值和右值的真正定义,但是有一个可以区分左值和右值的便捷方法:看能不能对表达式取地址,如果能,则为左值,否则为右值. 看见书上又将右值分为将亡值和纯右值.纯右值就是c++98标准中右值的概念,

11.深入理解读写锁ReentrantReadWriteLock

protected final int tryAcquireShared(int unused) { /* * Walkthrough: * 1. If write lock held by another thread, fail. * 2. Otherwise, this thread is eligible for * lock wrt state, so ask if it should block * because of queue policy. If not, try * to

第二十四章 C++11特性之右值引用

右值引用,是 C++11 语言核心中最为重要的改进之一.右值引用给 C++ 带来了“Move语义”(“转移语义”),同时解决了模板编程中完美转发的问题(Perfect forwarding).右值引用使 C++ 对象有能力甄别什么是(可以看作)临时对象,对于临时对象的拷贝可以做某种特别的处理,一般来说主要是直接传递资源的所有权而不是像一般地进行拷贝,这就是所谓的 move 语义了.完美转发则是指在模板编程的时候,各层级函数参数传递时不会丢失参数的“属性”(lvalue/rvalue, const

angularjs随笔01 数据双向绑定理解 自定义过滤器 时钟更新列子

1.   数据的双向绑定可以简单的理解为,无论在文本框中输入什么,都会在数据模型中显示出来输入的内容, 双向绑定的模型和数据是进行动态绑定的,实时检查进行修改. <input type="text" ng-model="name"> {{name}} 在上述代码中,通过angular.js将数据模型对象($scope)的name属性与文本模型绑定在一起,然后就实现了在输入框输入什么都会 在文本模型中显示对应的内容,实时更新. 控制器controller,

第一次作业p7 1-1 1-2 1-6

1-1怎样理解数据压缩中所压缩的内容? 数据压缩就是以最少的数码表示信息源所发的信号,减少容纳所给定的消息集合或数据采样集合的信号空间. 压缩的内容可以是照片的分辨率,视频的清晰度. 最简单的说法就是压缩的是文件的大小,或者说文件所占用的二进制元的个数比如说2Kb压缩到1.5Kb,这个文件变小之后会便于存储和传输 1-2为什么要对数据进行压缩? 时间上--------降低传输时间频率上--------能一次进行更多的数据传送空间上--------节省数据的存储空间就我个人来讲为什么进行压缩本质上

第11章

11.1理解remoting 11.1.1应用程序域基本概念 .NET提供了一项技术,使得跨应用程序域中的对象也可以相互访问,该技术就是.NET remoting.(185) 11.1.2应用程序域的基本操作 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.IO; using System.Thr

《深入理解JavaScript系列》系列技术文章整理收藏

<深入理解JavaScript系列>系列技术文章整理收藏 深入理解JavaScript系列来自汤姆大叔的整理贴,原文地址http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html 此处收藏供JavaScript学习参考 1深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 2深入理解JavaScript系列(2):揭秘命名函数表达式 3深入理解JavaScript系列(3):全面解析Module模式

Faster R-CNN论文详解

原文链接:http://lib.csdn.net/article/deeplearning/46182 paper链接:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks &创新点 设计Region Proposal Networks[RPN],利用CNN卷积操作后的特征图生成region proposals,代替了Selective Search.EdgeBoxes等方法,速度上提升明显:

CNN网络架构演进:从LeNet到DenseNet

卷积神经网络可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀.CNN从90年代的LeNet开始,21世纪初沉寂了10年,直到12年AlexNet开始又再焕发第二春,从ZF Net到VGG,GoogLeNet再到ResNet和最近的DenseNet,网络越来越深,架构越来越复杂,解决反向传播时梯度消失的方法也越来越巧妙.新年有假期,就好好总结一波CNN的各种经典架构吧,领略一下CNN的发展历程中各路大神之间的智慧碰撞之美. 上面那图是ILSVRC历年的Top-5错误率,