美文网首页
卷积与池化

卷积与池化

作者: D_Major | 来源:发表于2019-02-19 15:26 被阅读0次

    关于卷积

    参考https://www.cnblogs.com/believe-in-me/p/6645402.html
    卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT-CONV-RELU-POOL-FC

    卷积核与输入图像卷积
    输入图像是32 * 32 * 3,3是它的深度(即R、G、B),卷积核是一个5 * 5 * 3的filter,这里注意:卷积核的深度必须和输入图像的深度相同。通过一个filter与输入图像的卷积可以得到一个28 * 28 * 1的特征图.
    Wout = (Win - K + 2P) / S + 1 = (32 - 5 + 2 * 0) / 1 + 1 = 28
    tensorflow中kernels = [5, 5, 3, 16]代表16个5x5x3的卷积核, stride = [1, 2, 2, 1]代表横纵两个方向上的步长都等于2, 看中间的两个.
    RELU为激活函数, 引入非线性
    矩阵卷积为点积再求和, 不是矩阵相乘.有时卷积核需180度上下翻转
    输入图像和filter的对应位置元素相乘再求和,最后再加上b,得到特征图。如图中所示,filter w0的第一层channel和输入图像的蓝色方框中对应元素相乘再求和得到0,其他两个channel得到2,0,则有0+2+0+1=3即图中右边特征图的第一个元素3.
    stride=2, 则卷积核向右移动2格, 继续与输入图像相乘
    padding项,即为图像加上一个边界,边界元素均为0或复制最边上的数,(对原输入无影响)一般有
    F=3 => zero pad with 1
    F=5 => zero pad with 2
    F=7 => zero pad with 3
    边界宽度是一个经验值,加上zero pad这一项是为了充分利用边界上的像素, 有时也可使输入图像和卷积后的特征图具有相同的大小(stride为1时),如:
    输入为5*5*3,filter为3*3*3,在zero pad 为1,则加上zero pad后的输入图像为7*7*3,则卷积后的特征图大小为5*5*1 ( 有如下公式可得(5 + 2 * 1 - 3) / 1 + 1 ),与输入图像一样.
    输出大小计算公式

    按照经验, 网络中看到stride为1的时候,当kernel为 3 padding为1或者kernel为5 padding为2 一看就是卷积前后尺寸不变(卷积向下取整,池化向上取整); stride=2时, 当kernel=3 padding=1时或者kernel=5 padding=2时, 尺寸减半.

    对于反卷积
    反卷积过程
    输入:2x2, 卷积核:4x4, 滑动步长:3, 输出:7x7
    (2 - 1) * 3 + 4 = 7 (此处的7x7是做了padding的, 原图大小应该为5x5)
    就是把普通卷积的计算Wout = (Win + 2P - K) / S + 1反过来
    Wout' = (Win' - 1) * S + K - 2P
    权值共享

    由经验: stride=1时, k=5, p = 2则输出图像尺寸大小和输入图像相同

    权值共享
    如没有这个原则,则总特征图由10个32*32*1的特征图组成,即每个特征图上有1024个神经元(像素, 不是卷积核),每个神经元对应输入图像上一块5*5*3的区域,即一个神经元和输入图像的这块区域有75个连接,即75个权值参数,则共有75*1024*10=768000个权值参数,这是非常复杂的,因此卷积神经网络引入“权值”共享原则,即一个特征图上每个神经元对应的75个权值参数被其他神经元共享,这样则只需75*10=750个权值参数,而每个特征图的阈值也共享,即需要10个阈值,则总共需要750+10=760个参数。
    即每个filter对每一个像素采取相同的权重系数, 不随filter的滑动而改变, 则10个filter总共需要750个权重系数

    问题: 特征图feature map上的阈值是什么? bias吗?

    池化(下采样)

    池化层:对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征,如下:

    池化压缩特征

    注意:这里的pooling操作使特征图缩小,有可能影响网络的准确度,因此可以通过增加特征图的channel来弥补 (池化不改变channel数)

    全连接层:连接所有的特征,将输出值送给分类器(如softmax分类器)

    另外:CNN网络中前几层的卷积层参数量占比小,计算量占比大;而后面的全连接层正好相反,大部分CNN网络都具有这个特点。因此我们在进行计算加速优化时,重点放在卷积层;进行参数优化、权值裁剪时,重点放在全连接层

    相关文章

      网友评论

          本文标题:卷积与池化

          本文链接:https://www.haomeiwen.com/subject/jkqfyqtx.html