这里是 AI 研习社,我们的问答版块已经正式推出了!欢迎大家来多多交流~
https://club.leiphone.com/page/question
(戳文末阅读原文直接进)
问:在卷积神经网络中,卷积核到底是几层的?
在卷积神经网络中,总是搞不清楚卷积核到底是单层的还是多层的?比如上一层的feature map是5层的200*200 这个时候设定一个3*3的卷积核去进行卷积 那么这个卷积核:
(1)应该是1*3*3的他对上一层的feature map是一层一层的进行卷积然后再将各层的map 进行合并?
(2)还是这个卷积核就是5*3*3的直接一次性的对这一块进行了卷积了?最后针对这一个卷积核生成一层的feature map 最终这一阶段的feature map层数取决于卷积核的数量 即:一个卷积核生成一层的feature map
这个问题就是年前 上完cs231n遗留下的,估计是当时没有注意听,还是老师觉得这个问题就不用讲呀?
来自社友的回答
▼▼▼
@吴正一BISTU:
你的想法2是对的,这是个入门坑
@星石:
第2种,按照三维卷积核理解
@鲤2011:
我猜测是一层filter贯穿所有层,但是每一层权值不共享,最后导致每一层初始filter相同,但最后实际每一层filter又不一样了实际结果等同于每一层一个filter,最终结果是一层filter检测了所有层,所有层结果合并变成下一层的map,不知道对不对,知道的说一下,我也有点不太确定
@金姆·斯诺:
第二种,吴恩达老师在他的深度学习课程里有讲
@antzantz :
一般而言,深度卷积网络是一层又一层的。层的内存本质是输入数据及其中间表示值。一组卷积核则是联系前后两层的网络结构表达实体,训练的目标就是每个卷积核的一组权重参数。
描述网络模型中某层的厚度,通常用名词通道channel数或者特征图feature map数。不过人们更习惯把作为数据输入的前层的厚度称之为通道数(比如RGB三色图层称为输入通道数为3),把作为卷积输出的后层的厚度称之为特征图数。
卷积核filter一般是3D的,除了面积参数比如3x3之外,还有厚度参数H(2D的视为厚度1)和卷积核的个数N。
卷积核的厚度H, 一般等于前层厚度M(输入通道数,或前层feature map数);不一般的情况M > H。
卷积核的个数N,等于后层厚度(后层feature maps数,也用N表示)。
卷积核通常从属于后层,为后层提供了各种查看前层特征的视角,这个视角是自动形成的。卷积核厚度等于1时为2D卷积,对应平面点相乘然后把结果加起来,相当于点积运算;
卷积核厚度大于1时为3D卷积,每片分别平面点求卷积,然后把每片结果加起来,作为3D卷积结果;1x1卷积属于3D卷积的一个特例,有厚度无面积。
归纳之,卷积的意思就是把一个区域,不管是一维线段,二维方阵,还是三维长方块,全部按照卷积核的维度形状,对应逐点相乘后求和,浓缩成一个标量值也就是降到零维度,作为下一层的一个feature map的一个点的值!可以想象一群渔夫坐一个渔船撒网打鱼,鱼塘是多层水域,每层鱼儿不同。
船每次移位一个stride到一个地方,每个渔夫撒一网,得到收获,然后换一个距离stride再撒,如此重复直到遍历鱼塘。
A渔夫盯着鱼的品种,遍历鱼塘后该渔夫描绘了鱼塘的鱼品种分布;
B渔夫盯着鱼的重量,遍历鱼塘后该渔夫描绘了鱼塘的鱼重量分布;
还有N-2个渔夫。。。。各干各的,没人知道他们想什么;
最后得到N个特征图,描述了鱼塘的一切,包括水草!
2D卷积表示渔夫的网就是带一圈浮标的渔网,只打上层水体的鱼;
3D卷积表示渔夫的网是多层嵌套的渔网,上中下层水体的鱼儿都跑不掉;
1x1卷积可以视为每次移位stride,钓鱼代替了撒网;
解释不一般的情况M > H:
实际上,除了输入数据的通道数比较少之外,中间层的feature map数很多,这样中间层算卷积会累死计算机(鱼塘太深,每层鱼都打,需要的鱼网太重了)。所以很多深度卷积网络把通道做了分组,每个卷积核不看全部通道了(渔夫A的渔网只打捞深水段,渔夫B的渔网只打捞浅水段)。这样会看到整个深度网络架构是横向开始分道扬镳了,到后面才又融合。这样看来,很多网络模型的架构不是突发奇想,而是是被计算量逼得。
@那抹阳关 :
翻了下吴恩达的课程,确实是第二种想法
@loveisp :
其实前面的回答都不怎么对。。现在比较流行的卷积方法叫separable conv,其中depthwise separable conv就是按你说的(1)做卷积的。一定要多看文献,卷积这一块发展速度太快了,各种新思想层出不穷。
欢迎点击“阅读原文”
或者移步 AI 研习社社区
我们会把你的问题对接给技术大牛