博客
关于我
Deep Learning---caffe模型参数量(weights)计算
阅读量:78 次
发布时间:2019-02-25

本文共 940 字,大约阅读时间需要 3 分钟。

Draw_convnet

通过使用开源工具draw_convnet,可以手动绘制前向计算网络的计算图。这种方法非常直观,尤其是在参数量的计算方面效果尤为明显。在深入了解每一层的输入输出以及参数设置后,可以清晰地看到计算过程的各个环节。

feature map大小计算

在深度学习中,feature map的大小计算是一个关键步骤。以下是常见的计算方法:

  • 输入:N0C0H0*W0

  • 输出:N1C1H1*W1

  • feature map大小:

    H1 = (H0 + 2×pad - kernel_size) / stride + 1
    W1 = (W0 + 2×pad - kernel_size) / stride + 1
    当输入的H0 = W0时,公式可以简化为:
    H1 = W1 = (h + 2×pad - kernel_size) / stride + 1

    注:当stride为1时,若pad=(kernel_size−1)/2,那么经过计算后的feature map大小保持不变。

以LeNet-5为例

以下是LeNet-5网络的前向计算模拟图:

  • 输入层为多通道图像,网络结构包括两层卷积层和几层全连接层。
  • 网络中的卷积核(kernel)大小和通道数直接影响参数量。
  • 每个卷积核都有对应的偏置项(bias)。

参数量计算

  • C1:5x5x20卷积核,输出20个feature map,参数量为500。
  • C2:20x5x5x50卷积核,输出50个feature map,参数量为25000。
  • F1:50x4x4x500全连接层,输出500个feature map,参数量为400000。
  • F2:500x1x1x10全连接层,输出10个feature map,参数量为5000。

总参数量为500 + 25000 + 400000 + 5000 = 431080。使用4字节存储,总体参数量大小为431080x4=1724320字节,约为1.64MB。

参数量分析

LeNet-5的模型大小与实际训练结果接近,主要包含卷积层和全连接层的参数。通过优化卷积核大小和使用更高效的存储格式,可以进一步减少参数量。

参考资料

本文基于LeNet-5网络进行分析,结合实际模型训练结果进行对比。

转载地址:http://ydj.baihongyu.com/

你可能感兴趣的文章
Objective-C实现矩阵螺旋打印算法(附完整源码)
查看>>
Objective-C实现矩阵转置(附完整源码)
查看>>
Objective-C实现短作业优先调度算法(附完整源码)
查看>>
Objective-C实现离散傅立叶变换DFT算法(附完整源码)
查看>>
Objective-C实现离散傅立叶逆变换 IDFT算法(附完整源码)
查看>>
Objective-C实现离散傅里叶变换(附完整源码)
查看>>
Objective-C实现离散数学真值表(附完整源码)
查看>>
Objective-C实现移位密码加解密(附完整源码)
查看>>
Objective-C实现程序暂停(附完整源码)
查看>>
Objective-C实现程序等待一段时间(附完整源码)
查看>>
Objective-C实现程序自动更新(附完整源码)
查看>>
Objective-C实现窗口截图(附完整源码)
查看>>
Objective-C实现笔记本自带摄像头扫二维码功能(附完整源码)
查看>>
Objective-C实现符号sign函数功能(附完整源码)
查看>>
Objective-C实现第k个字典排列算法(附完整源码)
查看>>
Objective-C实现简单替换密码算法(附完整源码)
查看>>
Objective-C实现米到英尺的转换算法(附完整源码)
查看>>
Objective-C实现粒子群算法(附完整源码)
查看>>
Objective-C实现精准计时(附完整源码)
查看>>
Objective-C实现系统托盘功能(附完整源码)
查看>>