不积跬步,无以至千里;不积小流,无以成江海。——荀子

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

 

单层卷积网络

  如何构建卷积神经网络的卷积层?

       如下图,6x6x3的RGB图像与2个3x3x3的卷积核做卷积,得到2个4x4的矩阵,然后再加上偏置b(对4x4矩阵每个元素均加上该偏置b),接着将其作为ReLU激活函数的输入,得到2个4x4的矩阵输出。即6x6x3的RGB图像与2个3x3x3的卷积核做卷积会得到一个4x4x2的输出。如果卷积核的数量时10,那么输出大小就是4x4x10。

 

       如何计算卷积运算中参数量?假设一层中有10个3x3x3的卷积核,则总共参数有总共有(3 x 3 x 3 + 1)x 10 = 280个参数。如下图所示。

 

注:不论输入图片有多大,参数量都是一样的。这个有助于避免过拟合。

 

  输入输出尺寸推导公式。如果第l层是卷积层,那么卷积核的通道数与输入的通道数,卷积核的个数等于输出的通道数。输出大小计算方法为(n+2p-f)/s+1。如下图。

 

注:

1)Filter大小:,其通道数等于输入的通道数

2)输出的通道数就是filter的个数

 

总结如下:

 

m表示batch size

偏差bias在代码中一般表示为一个的四维向量或者四维张量

 

 

简单神经网络示意

  假设你有一张图片x,大小为39x39x3;

  filter1参数:每个filter大小3x3,stride=1,padding=0,总共有10个filter;

  图片x与filter1卷积之后产生37x37x10大小的feature map1;

  filter2参数:f=5,s=2,p=0,总共有20个filter;

  feature map1与filter2做卷积,得到17x17x20大小的feature map2;

  filter3参数:f=5,s=2,p=0,总共有40个filter;

  feature map2与filter3做卷积,得到7x7x40大小的feature map3

  39x39x3的原图像经过一系列的卷积操作之后,最后输出7x7x40大小的feature map,即为该图像提取了7x7x40=1960个特征。然后将展开(flatten)成1960个单元(即一个1960维的向量),最后经过logistic或者softmax单元,得到最后的分类值。

 

过程如下图:

  设计卷积神经网络的时候,确定这些超参数比较费功夫,要决定filter的大小、个数,stride,padding等。一般,feature map的大小不断变小,其channel不断的增大。

 

  一个典型的卷积神经网络通常有3层,一个是卷积层(Conv),另一个是池化层(Pooling),最后一个是全连接层(Fully connected,FC)

 

 

池化层

  用来减缩模型大小,提高计算速度,同时提高所提取特征的鲁棒性。

  下图为最大池化(max pooling)示意图。其中,Filter size 2x2     stride=2

 

  池化层的特点:

  有一组超参数,但是没有参数需要学习,一旦确定了f和s,它就是一个固定的运算,梯度下降无需改变任何值。超参数一般是手动设置或者通过交叉验证设置的。

 

 

  上面的把4x4的输入看做是某些特征的集合,数字大意为着可能提取了某些特定特征。

  最大池化可以保留最显著的特征

  人们使用最大池化的其中一个原因是,此方法在很多实验中效果都很好

 

另外一个例子:

最大池化,filter size:3x3,stride=1

 

注:

对于输入是多维的情况,输出也是多维的;计算方式是,对每个通道分别执行最大池化过程

 

 

平均池化:选取的不是每个filter的最大值,而是平均值。

 

 

  一般来说,目前最大池化比平均池化要更常用

  但也有例外,就是深度很深的神经网络,你可以用平均池化来分解规模为7x7x1000的网络表示层,在整个空间内求平均值,得到1x1x1000

  一般在最大池化中,使用padding是比较少的,但也有例外。

 

   总结如下:

 

 

 内容主要来自与:

Andrew Ng的卷积神经网络课程

posted on 2018-01-27 21:41  hejunlin  阅读(560)  评论(0编辑  收藏  举报