考虑 103×103 的输入图像:

  • 全连接,隐层神经元的数目为 106 时,则每一个输入像素与每一个隐层神经元之间都是待学习的参数,
    • 数目为 106×106=1012
  • 卷积,卷积核的大小为 10×10 时,
    • 步长为 10,103×10310×10×(10×10)103×10310×10表示的是输入图像可划分的块数,也即经卷机作用后的输出图像;
    • 步长为 1,(10310+1)×(10310+1)(10×10)
    • 在不考虑步长的前提下,可近似将待学习的参数的数目视为 (103×103)(10×10)

1. 全连接层对参数个数的显著提升

现考虑图像输入层和 500 个隐层神经元的全连接:

  • MNIST:28×28×1×500=392000
  • CIfar:32×32×3×500=1536000
    • 而对于卷积操作而言,如 5×5 深度为 16 的卷积核而言,则需要的计算量为:5×5×3×16+16=1216,极大地降低了参数的规模;

参数增多导致计算速度减慢,且很容易导致过拟合。

2. 卷积的共享参数特性

通过一个某一卷积核(过滤器),将一个 2×2×3 的节点矩阵变化为 1×1×5 的单位节点矩阵,则本次卷积操作,共需要的参数为:

2×2×3×5+565

+5 表示偏值项参数,

对于 cifar-10 数据集,输入层矩阵的维度是 32×32×3,假设第一层卷积层使用尺寸为 5×5 深度为 16,则此卷基层的参数为:

5×5×3×16+×16=1216

注意区分卷积层的参数,与当前输入层与卷积层的连接的个数(也即参数的个数与连接的数目):

比如对于 LeNet-5 网络,32×32 的输入数据,经过 5×5×1×6 的卷积,得到 28×28×6 的特征映射:

  • 卷积层的参数:5×5××1×6+6=156
    • 核的长*核的宽*输入的通道数*输出的通道数;
  • 卷积层共 28×28×6=4704 个节点,每个节点和 5×5 个当前输入层节点相连,因此共连接数:4704×(5×5+1)=122304
    • 连接的数目与输入层的大小无关;

3. 卷积输出矩阵尺寸的大小

通过使用填充(padding,比如 zero-padding),或者使用过滤器移动的步长来结果输出矩阵的大小。

下面的公式给出在同时使用全零填充时结果矩阵的大小:

outlength=inlength/stridelengthoutwidth=inlength/stridewidth

如果不使用填充:

outlength=(inlengthfilterlength+1)/stridelengthoutwidth=(inlengthfilterwidth+1)/stridewidth

posted on 2017-05-14 10:32  未雨愁眸  阅读(1280)  评论(0编辑  收藏  举报