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

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

Draw_convnet

这里写图片描述

这幅图是通过开源的工具draw_convnet()生成的。在清楚整个前向计算网络中的每一个层的输入输出以及参数设置后可以自己手动画出计算图出来,对于参数量计算就很直观了。

feature map大小计算

输入:N0*C0*H0*W0 输出:N1*C1*H1*W1 输出的feature map大小: H1=(H0+2×pad−kernel_size) / stride+1 W1=(W0+2×pad−kernel_size) / stride+1 当输入的H0 == W0时,公式可以简化为:H1=W1=(h + 2xpad - kernel_size) / stride + 1注:当stride为1时,若pad=(kernel_size−1)  / 2,那么经过计算后的feature map大小不变

以LeNet-5为例

下面是一个多通道图像的输入LeNet-5网络前向计算模拟图:

LeNet-5

  • 网状立体格子表示kernel,其他颜色方图表示feature map(Input表示输入层,可以看做特殊的feature map)
  • 一个kernel对应一个feature map
  • 参数量主要为kernel大小
  • 每个kernel带一个bias

整个网络占据权重的为Convolution/Innerproduct 两层,分别计算参数量为,:

C1: 5 x 5 x 20 =  500,5x5卷积核, 20个feature map输出,20个kernelC2: 20x 5 x 5 x 50 = 25000 ,20维度输入,则20x5x5 kernel,50个feature map输出,即相当于20通道的图像输入,则需要20x5x5的kernel来卷积乘,50个这样的卷积核操作得到50个feature map,50个kernelF1: 50x4x4x500 = 400000,50维度特征图输入,全连接,每个点做卷积乘,则kernel大小为50x4x4,共500个feature map输出,500个kernelF2 : 500x1x1x10 = 5000,500维度特征图输入,全连接,kernel大小为500x1x1,共10个feature map输出,10个kernel

用4bytes的float类型来存储参数,则总的参数量大小为:

500 + 25000 + 400000 + 5000 + (20 + 50 + 500 + 10) =  431080

字节数为:

431080 x 4 = 1724320 ≈ 1683.90625kb ≈ 1.64M

对比实际LeNet-5网络基于caffe训练出来的模型大小为:1.64 MB (1,725,025 字节),基本接近,因为模型中可能还带有附加特性参数。

参考资料:

你可能感兴趣的文章
Nginx代理解决跨域问题(导致图片只能预览不能下载)
查看>>
Nginx代理访问提示ERR_CONTENT_LENGTH_MISMATCH
查看>>
Nginx代理配置详解
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
nginx优化日志拒绝特定404请求写入
查看>>
Nginx优化解析
查看>>
Nginx使用proxy_cache指令设置反向代理缓存静态资源
查看>>
Nginx做反向代理时访问端口被自动去除
查看>>
Nginx入门教程-简介、安装、反向代理、负载均衡、动静分离使用实例
查看>>
Nginx入门简介和反向代理、负载均衡、动静分离理解
查看>>
nginx入门篇----nginx服务器基础配置
查看>>
nginx反向代理
查看>>
Nginx反向代理
查看>>
nginx反向代理、文件批量改名及统计ip访问量等精髓总结
查看>>
Nginx反向代理与正向代理配置
查看>>
Nginx反向代理及负载均衡实现过程部署
查看>>
Nginx反向代理和负载均衡部署指南
查看>>
Nginx反向代理是什么意思?如何配置Nginx反向代理?
查看>>
nginx反向代理解决跨域问题,使本地调试更方便
查看>>