CNN的卷积核是单层的仍是多层的?

解析:数组

通常而言,深度卷积网络是一层又一层的。网络

层的本质是特征图, 存贮输入数据或其中间表示值。一组卷积核则是联系先后两层的网络参数表达体, 训练的目标就是每一个卷积核的权重参数组。描述网络模型中某层的厚度,一般用名词通道channel数或者特征图feature map数。架构

不过人们更习惯把做为数据输入的前层的厚度称之为通道数(好比RGB三色图层称为输入通道数为3),把做为卷积输出的后层的厚度称之为特征图数。 卷积核(filter)通常是3D多层的,除了面积参数, 好比3x3以外, 还有厚度参数H(2D的视为厚度1). 还有一个属性是卷积核的个数N。ide

卷积核的厚度H, 通常等于前层厚度M(输入通道数或feature map数). 特殊状况M > H。 卷积核的个数N, 通常等于后层厚度(后层feature maps数,由于相等因此也用N表示)。 卷积核一般从属于后层,为后层提供了各类查看前层特征的视角,这个视角是自动造成的。遍历

卷积核厚度等于1时为2D卷积,对应平面点相乘而后把结果加起来,至关于点积运算; 卷积核厚度大于1时为3D卷积,每片分别平面点求卷积,而后把每片结果加起来,做为3D卷积结果;1x1卷积属于3D卷积的一个特例,有厚度无面积, 直接把每片单个点乘以权重再相加。map

概括之,卷积的意思就是把一个区域,无论是一维线段,二维方阵,仍是三维长方块,所有按照卷积核的维度形状,对应逐点相乘再求和,浓缩成一个标量值也就是降到零维度,做为下一层的一个feature map的一个点的值!channel

能够比喻一群渔夫坐一个渔船撒网打鱼,鱼塘是多层水域,每层鱼儿不一样。数据

船每次移位一个stride到一个地方,每一个渔夫撒一网,获得收获,而后换一个距离stride再撒,如此重复直到遍历鱼塘。 A渔夫盯着鱼的品种,遍历鱼塘后该渔夫描绘了鱼塘的鱼品种分布; B渔夫盯着鱼的重量,遍历鱼塘后该渔夫描绘了鱼塘的鱼重量分布;filter

还有N-2个渔夫,各自兴趣各干各的; 最后获得N个特征图,描述了鱼塘的一切!计算机

2D卷积表示渔夫的网就是带一圈浮标的渔网,只打上面一层水体的鱼; 3D卷积表示渔夫的网是多层嵌套的渔网,上中下层水体的鱼儿都跑不掉; 1x1卷积能够视为每次移位stride,甩钩钓鱼代替了撒网;

下面解释一下特殊状况的 M > H:实际上,除了输入数据的通道数比较少以外,中间层的feature map数不少,这样中间层算卷积会累死计算机(鱼塘太深,每层鱼都打,须要的鱼网过重了)。

因此不少深度卷积网络把所有通道/特征图划分一下,每一个卷积核只看其中一部分(渔夫A的渔网只打捞深水段,渔夫B的渔网只打捞浅水段)。这样整个深度网络架构是横向开始分道扬镳了,到最后才又融合。

这样看来,不少网络模型的架构不彻底是突发奇想,而是是被参数计算量逼得。特别是如今须要在移动设备上进行AI应用计算(也叫推断), 模型参数规模必须更小, 因此出现不少减小握手规模的卷积形式, 如今主流网络架构大都如此。

相关文章
相关标签/搜索