轻量化网络+轻量化语义分割网络的评价参数的理论计算与实际计算

1.定义

  • 参数数量(params):指模型含有多少参数,直接决定模型的大小,也影响推断时对内存的占用量
    • 单位通常为 M,通常参数用 float32 表示,所以模型大小是参数数量的 4 倍左右
    • 参数数量与模型大小转换示例:10M float32 bit = 10M × 4 bytes = 40Mb
  • 理论计算量(FLOPs):指模型推断时需要多少计算次数
    • 是 floating point operations 的缩写(注意 s 小写),可以用来衡量算法/模型的复杂度,这关系到算法速度,大模型的单位通常为 G(GFLOPs:10亿次浮点运算),小模型单位通常为 M
    • 通常只考虑乘加操作(Multi-Adds)的数量,而且只考虑 CONV 和 FC 等参数层的计算量,忽略 BN 和 PReLU 等等。一般情况,CONV 和 FC 层也会忽略仅纯加操作的计算量,如 bias 偏置加和 shotcut 残差加等,目前有 BN 的卷积层可以不加 bias
  • PS:计算平台的两个指标如下所示
    • 算力: 计算平台倾尽全力每秒钟所能完成的浮点运算数,单位一般为 TFLOPS(floating point of per second)
    • 带宽: 计算平台倾尽全力每秒所能完成的内存(CPU 内存 or GPU 显存)交换量,单位一般为 GB/s(Gbyte/second),计算公式一般为 内存频率 × 内存位宽 / 8

2.理论计算公式

轻量化网络+轻量化语义分割网络的评价参数的理论计算与实际计算

3.pytorch计算应用

pytorch计算params和FLOPs-深度学习中,模型训练完后,查看模型的参数量和浮点计算量

在pytorch中有现成的包thop用于计算参数数量和FLOP

我们知道用什么工具,之后去查详细的API即可。

参考链接:
1、https://blog.****.net/mzpmzk/article/details/82976871
2、https://blog.****.net/qq_26369907/article/details/89857021