深度学习模型/算法的运算复杂度分析

时间:2024-03-30 11:26:34

分四大部份:
 

  • 空间占用——单个模型的参数文件要占用多大空间
  • 内存占用——运行在手机或平板上时需要占用多大的 RAM
  • 运行速度——尤其考虑实时的视频和大图像处理情形
     
  • 耗电情况

Ref:

原文: http://machinethink.net/blog/how-fast-is-my-model/

翻译:https://blog.csdn.net/leayc/article/details/81001801


影响内存占用的主要因素:ResNet-50为例 network architecture图

输入image数据

256*256的彩色图像:256*256*3*1 byte= 192KB

模型自身conv.等使用到的Params参数

ResNet-50有26 million参数,占内存:26M * 32 bit = 99MB

模型里各layer计算产生的中间变量(memory), 也就是输入图像在计算时每一层产生的输入和输出feature map

ResNet-50有16 million响应 (没推衍怎么算的),占内存:16M*32bit = 64MB

做mini-batch训练时batch size的影响

ResNet-50,mini-batch=16,各层相应占内存:64MB*16= 1GB

BP算法: 如果用BP算法(back propagation)时中间变量部份还要*2 ~~!!!

深度学习模型/算法的运算复杂度分析

所以一张256*256彩色影像做FP的inference时=192KB+99MB+64MB就还好,训练时加上batch因素就瞬间变内存怪兽爆掉

Ref:

https://blog.csdn.net/shenxiaolu1984/article/details/71522141/

https://blog.csdn.net/wz22881916/article/details/81054036


YOLO V3 中间层变量分析,这要推导出中间变量占用内存有点难..........
https://blog.csdn.net/dz4543/article/details/90049377