zoukankan      html  css  js  c++  java
  • 卷积神经网络的权值参数个数的量化分析

    考虑 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

  • 相关阅读:
    C++格式化输入输出
    算法的时间复杂度和空间复杂度
    C++编程中const和#define的区别
    C#中结构体和类的区别
    SQL之删除触发器
    Windows添加和取消右键管理员权限
    SQL之trigger(触发器)
    SQL VIEW(视图)
    二分查找的实现
    C++中this指针
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421449.html
Copyright © 2011-2022 走看看