黄金10月,秋招已经开始了。不知最近有没有同学在投简历面试呢?回想起几年前我面试某大厂的时候,被问到了很多深度学习相关的知识,那时的我懂的不多,可以说是被面试官360度无死角蹂躏。
那次面试,印象最深的是问了很多与卷积相关的问题,导致我后来工作一段时间看到卷积就时不时的去查些资料,害怕自己又理解错了。
今天就介绍一个我曾经被问到的问题,那就是:在卷积神经网络中,1x1的卷积都有什么作用?本文首发于:面试官问,1x1 的卷积有什么用?
1、在卷积神经网络中,1x1的卷积有什么作用呢?
大概有以下几个作用。第一是可以实现输出feature map(特征图)的升维和降维第二个是可以减少模型中的参数量,从而减少计算量,提升模型的推理性能除此之外,就是使用1x1的卷积可以增加网络的深度,从而提升模型的非线性表达能力。
2、1x1的卷积是如何实现升维和降维的
这里说的1x1的卷积实现升维和降维的功能,指的是 feature map 通道维度的改变,也即特征维度的改变。
这是因为1x1的卷积,卷积核长宽尺寸都是 1,在计算的过程中,不存在长、宽方向像素之间的融合计算(乘累加计算),而仅仅存在通道之间的融合计算。
因此,在这种情况下,1x1的卷积所能改变的仅仅是通道数。而从卷积算法上可以看出,卷积核的个数就是卷积输出的通道数。因此如果想让输出特征图的通道数增大,就要使用更多数量的卷积核来做卷积,从而实现特征维度的升或者降。
3、1x1的卷积是如何减少模型参数的
减少参数量可以这么理解:在输出相同特征图的前提下,将一个普通的卷积,替换成一个1x1的卷积加上另一个卷积,先进行降维,然后计算,如此一来整体的计算量要比普通卷积少
。
举个例子,如上图所示。假设一个卷积的输入通道是128,输出通道是32,如果不使用1x1的卷积,那么整个卷积的乘累加计算量是:28x28x128x3x3x32 = 28901376而如果使用1x1的卷积先降维处理,然后在降维之后的特征图上进行一个卷积计算,那么整体的乘累加计算量为:128x28x28x16 + 28x28x16x3x3x32 = 5218304两者对比,后者比前者减少了80%的计算量。
4、如何理解1x1卷积可以提升模型的非线性表达能力
神经网络模拟的就是一个非线性系统,之所以在卷积层后面增加非线性层,比如Relu层,其实就是这个道理。而1x1的卷积可以使得在完成相同卷积功能的前提下,网络的层数变得更深(如上面的例子,一个普通卷积变成了2层卷积)。
网络层数的加深,就会导致更多非线性层数的增加,从而使得整个神经网络模型的非线性表达能力更强。
5、1x1的卷积还有其他哪些优势吗
1x1的卷积还可以增加通道之间的融合程度。由于1x1卷积不存在长宽方向的像素融合,所有的计算都是通道之间的交叉计算,因此,可以更好的完成通道间的融合,而通道代表的是特征,因此可以更好的实现特征融合这一点,和全连接类似(因为1x1的卷积就可以表示为全连接)。
总结:如果在面试过程中被问到关于1x1的卷积问题,把上面的几点回答出来,这个问题基本就可以了,不知道有没有人被问道过这个问题呢?
最后,祝各位在秋招中表现出色,都能拿到满意的offer~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。