博客
关于我
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实现构造n以内的素数表(附完整源码)
查看>>
Objective-C实现某文件夹下文件重命名(附完整源码)
查看>>
Objective-C实现查找整数数组中给定的最小数字算法(附完整源码)
查看>>
Objective-C实现根据cpu和磁盘序列号生成注册码( 附完整源码)
查看>>
Objective-C实现格雷码序列算法(附完整源码)
查看>>
Objective-C实现桥接模式(附完整源码)
查看>>
Objective-C实现检查给定图中是否存在循环算法(附完整源码)
查看>>
Objective-C实现检查给定字符串是否在camelCase中算法(附完整源码)
查看>>
Objective-C实现欧几里得距离(附完整源码)
查看>>
Objective-C实现求a的逆元x(附完整源码)
查看>>
Objective-C实现求众数(附完整源码)
查看>>
Objective-C实现求曲线在某点的导数(附完整源码)
查看>>
Objective-C实现求最大公约数 (GCD)的算法(附完整源码)
查看>>
Objective-C实现深度优先搜索递归算法(附完整源码)
查看>>
Objective-C实现牛顿下山法(附完整源码)
查看>>
Objective-C实现牛顿插值法(附完整源码)
查看>>
Objective-C实现牛顿法算法(附完整源码)
查看>>