深度学习模型参数量/计算量和推理速度计算

微信正文链接:https://mp.weixin.qq.com/s/nknW

1.FLOPs和Params计算

1.1概念理解

FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。

计算公式:
对卷积层:(K_h * K_w * C_in * C_out) * (H_out * W_out)
对全连接层:C_in * C_out

FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。

Params:是指模型训练中需要训练的参数总数

模型参数量计算公式为:
对卷积层:(K_h * K_w * C_in)* C_out
对全连接层:C_in * C_out

注意:
1.params只与你定义的网络结构有关,和forward的任何操作无关。即定义好了网络结构,参数就已经决定了。FLOPs和不同的层运算结构有关。如果forward时在同一层(同一名字命名的层)多次运算,FLOPs不会增加
2.Model_size = 4*params  模型大小约为参数量的4倍

 

计算量

了解模型速度的一种方法是简单计算它执行的计算量。我们通常将其视为FLOPS,每秒浮点运算。稍有不同的其他度量是MACC或乘法累加运算,也称为MADD。

我们不应该忽略的是层的stride,以及任何dilation因子,padding等。这就是为什么我们需要参看层的输出特征图的尺寸Hout × Wout,因它考虑到了stride等因素。

示例:对于3×3,128个filter的卷积,在112×112带有64个通道的输入特征图上,我们执行多个MACC:

3 × 3 × 64 × 112 × 112 × 128 = 924,844,032

这几乎是10 亿次累积运算!使得GPU忙于计算......

注意:在此示例中,我们使用“same”填充和stride = 1,以便输出特征图与输入特征图具有相同的大小。通常看到卷积层使用stride = 2,这会将输出特征图大小减少一半,在上面的计算中,我们将使用56 × 56而不是112 × 112。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值