DeepLearning计算代价:FLOPs

机器学习领域论文中,有时会通过"Accuracy-FLOPs"图来比较不同模型在性能和计算力代价方面的权衡,比如最近谷歌的EfficientNet。本文介绍一下FLOPs的含义~
DeepLearning计算代价:FLOPs_第1张图片
刚看到FLOPS,我第一反应是之前看到过的用来衡量硬件计算性能的指标,这里需要做一下区分:

  • FLOPS(floating point operations per second),即每秒浮点数运算次数,所以它是一个衡量硬件计算能力的指标
  • FLOPs(floating point operations),即浮点数运算次数,是一个计算量,所以可以用来衡量一个算法、模型等的复杂度(为了便于区分,这里”s"是小写的,只是在实际论文中有时不区分这个细节,毕竟语境在那儿呢~)

关于FLOPS的计算,一般就是计算乘法、加法的运算次数,网上关于CNN的卷积层计算FLOPS的例子很多,这里给出一个知乎上相关问题的链接,感兴趣的话可以去看看:链接

给出一些常见网络的FLOPs指标,方便对其规模有一个大致的概念:
DeepLearning计算代价:FLOPs_第2张图片
更多模型规模可以参见这里

计算FLOPs的工具应该挺多的,我没有过多地去寻找和尝试,这里给出一个可以用pip安装的相关工具:THOP: PyTorch-OpCounter

你可能感兴趣的:(机器学习基本概念)