深度学习中有关网络中的参数量(param)计算,附录有浮点计算量(FLOPs)的链接

网络参数量(param)关乎模型复杂度和显存需求,而浮点计算量(FLOPs)影响GPU计算速度。卷积层参数基于kernel_size、in_channel和out_channel计算,池化层无参数。全连接层参数计算需区分前后连接类型。模型尺寸通常以参数量计量,大的模型可能以兆(M)为单位。量化技术可减少参数存储需求,如从32位降至8位,显著降低模型大小。
摘要由CSDN通过智能技术生成

网络中的参数量(param)和浮点计算量(FLOPs)的计算

一、网络中的参数量(param)是什么?浮点计算量(FLOPs)是什么?

1.网络中的参数量(param)对应与空间Space概念,及空间复杂度。
2.浮点计算量(FLOPs)对应与时间Time概念,对应于时间复杂度。
即,网络参数量(param)和显存密切相关;浮点计算量(FLOPs)和GPU的计算速度相关。

二、如何计算网络中的参数量(param)

网络中的参数量(param)的计算
网络中参数计算需要分为

卷积层:
需要关注的参数为(kernel_size,in_channel,out_channel)
计算公式:
在这里插入图片描述
举个例子:
如下图所示:
image_size = 5x5x3
kernel_size = 3x3
in_channel = 3 (图像channel)
out_channel = 2 (卷积核数目\filter数目)
则该卷积层的参数个数为:
在这里插入图片描述

在这里插入图片描述
池化层:
池化层不需要参数。例如 max_pooling:直接最大化池化就可以,无需参数。
全连接层:
全连接层有两种情况,一种是卷积层到全连接层,一种是全连接层到全连接层,因此需要分情况来讨论:

CONV->FC 及计算公式
在这里插入图片描述
FC->FC 及计算公式
在这里插入图片描述
代码展示
附加:参数和模型显存\模型尺寸的关系
参数占用显存=参数数目×n

n=4:float32

n=2:float16

n=8:double64

除此之外,batch_size输入的图片占据大部分显存。

模型尺寸就是模型的大小,我们一般使用参数量parameter来衡量,注意,它的单位是个。但是由于很多模型参数量太大,所以一般取一个更方便的单位:兆(M) 来衡量。比如ResNet-152的参数量可以达到60 million = 0.0006M。有些时候,model size在实际计算时除了包含参数量以外,还包括网络架构信息和优化器信息等。比如存储一个一般的CNN模型(ImageNet训练)需要大于300MB。

M和MB的换算关系:

比如说我有一个模型参数量是1M,在一般的深度学习框架中(比如说PyTorch),一般是32位存储。32位存储的意思就是1个参数用32个bit来存储。那么这个拥有1M参数量的模型所需要的存储空间的大小即为:1M * 32 bit = 32Mb = 4MB。因为1 Byte = 8 bit。现在的quantization技术就是减少参数量所占的位数:比如我用8位存储,那么:所需要的存储空间的大小即为:1M * 8 bit = 8Mb = 1MB。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值