深度学习:卷积池化

参考july 7月

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

一般来说,深度卷积网络是一层又一层的。层的本质是特征图,存储输入数据或其中间表示值。一组卷积核则是联系前后两层的网络参数表达体,训练的目标就是每个卷积核的权重参数组。
描述网络模型中某层的厚度,通道数channel或者特征图feature map。不过人们更习惯把作为数据输入的前层的厚度成为通道数(如RGB通道数为3),把作为卷积输出的后层的厚度称为特图数。
卷积核(filter)一般是3D多层,除了面积参数,如33之外,还有厚度参数H(2D的视为厚度1).还有一个属性是卷积核的个数N。
卷积核的厚度H,一般等于前层厚度M(输入通道数或feature map数)。特殊情况M>H。卷积核的个数N,一般等于后层厚度(后层feature maps数,因为相等所以也用N表示)。卷积核同城从属于后层,为后层提供了各种查看前层特征的视角,这个视角是自动形成的。卷积核厚度等于1时为2D卷积,对应平面点相乘然后把结果加起来,相当于点积运算;卷积核厚度大于1时为3D卷积,每片分别平面点求卷积,然后把每片结果加起来,作为3D卷积结果;1
1卷积属于3D卷积的一个特例,有厚度无面积,直接把每片单个点乘以权重再相加。
归纳之,卷积的意思就是把一个区域,不管是一维线段,二维方阵,还是三维长方块,全部按照卷积核的维度形状,对应逐点相乘再求和,浓缩成一个标量值也就是降到零维度,作为下一层的一个feature map的一个点的值!
可以比喻为一群渔夫坐一个渔船撒网打鱼,鱼塘是多层水域,每层鱼儿不同。
船每次移位一个stride到一个地方,每个渔夫撒上一网,得到收获,然后换一个距离stride再撒,如此重复直到遍历鱼塘。
A渔夫盯着鱼的品种,遍历鱼塘后该渔夫绘制了鱼塘的鱼品种分布;
B渔夫盯着鱼的重量,遍历鱼塘后该渔夫绘制了鱼塘的鱼重量分布;
还有N-2个渔夫,各自兴趣各干各的;
最后得到N-2个特征图,描述了鱼塘的一切!
2D卷积表示渔夫的网就是带一圈浮标的渔网,只打上面一层水体的鱼
3D卷积表示渔夫的网是多层嵌套的渔网,上中下层水体的鱼儿都跑不掉;
1*1卷积可以视为每次移位stride,甩钩钓鱼代替了撒网;

下面是M>H特殊情况的说明:实际上,除了输入数据的通道数比较少之外,中间层的feature map数很多,这种中间层计算卷积会累死计算机(鱼塘太深,每层鱼都打,需要的渔网太重)。所以很多深度卷积网络把全部通道/特征图划分一下,每个卷积核只看其中一部分(渔夫A的渔网只打捞深水段,渔夫B的渔网只打捞浅水段)。这样整个网络架构是横向开始分道扬镳,到最后又融合。这样看来,很多网络模型的架构不完全是突发奇想,而是被参数计算量所逼。特别是现在需要在移动设备上及进行AI应用计算(也叫推断),模型参数规模必须小,所以出现很多较少握手规模的卷积形式,现在主流网络架构大都如此。

什么是卷积

对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的卷积操作。
卷积
图中左边是原始输入数据,中间是滤波器,右边是输出的新的二维数据。

什么是池化层

简言之,取区域平均或最大
pool1

猜你喜欢

转载自blog.csdn.net/qq_33876194/article/details/87872738