这三个概念其实都差不多,都涉及浮点运算,但是还是有一些小的不同之处,下面简单总结一下:
一、GFLOPs、FLOPs、FLOPS
GFLOPS 就是 Giga Floating-point Operations Per Second,即每秒10亿次的浮点运算数,常作为GPU性能参数但不一定代表GPU的实际表现,因为还要考虑具体如何拆分多边形和像素、以及纹理填充,理论上该数值越高越好。
FLOPs 是floating point of operations的缩写,是浮点运算次数,可以用来衡量算法/模型复杂度。常用当然还有GFLOPs和TFLOPs
FLOPS (全部大写)是floating-point operations per second的缩写,意指每秒浮点运算次数。用来衡量硬件的性能。
二、单位换算
三、如何计算FLOPs
其中就是指计算量的大小,表示FLOPs。对于卷积层而言,FLOPs计算公式如下:
而在实际中,我们不可能自己计算FLOPs,所以,有相关计算FLOPs的三方库,一个是torchstat,一个是thop。
经过测试,基本上两个可以对齐的,任意选择一个就好。
四、计算示例
我们使用thop库来计算resnet50模型的计算量:
import torch
from thop import profile
from torchvision.models import resnet50
model = resnet50()
input1 = torch.randn(4, 3, 224, 224)
flops, params = profile(model, inputs=(input1, ))
print('FLOPs = ' + str(flops / 1000 ** 3) + 'G')
输出结果为:
[INFO] Register count_convNd() for <class 'torch.nn.modules.conv.Conv2d'>.
[INFO] Register count_normalization() for <class 'torch.nn.modules.batchnorm.BatchNorm2d'>.
[INFO] Register zero_ops() for <class 'torch.nn.modules.activation.ReLU'>.
[INFO] Register zero_ops() for <class 'torch.nn.modules.pooling.MaxPool2d'>.
[INFO] Register zero_ops() for <class 'torch.nn.modules.container.Sequential'>.
[INFO] Register count_adap_avgpool() for <class 'torch.nn.modules.pooling.AdaptiveAvgPool2d'>.
[INFO] Register count_linear() for <class 'torch.nn.modules.linear.Linear'>.
FLOPs = 16.534970368G
import torch
import torch.nn as nn
from thop import profile
if __name__ == '__main__':
model=nn.Sequential(nn.Conv2d(3,32,kernel_size=3,stride=1,padding=0))
# 输入数据
inputs=torch.randn(1,3,64,64)
macs,params=profile(model,inputs=(inputs,),verbose=True)
flops=2*macs
print('flops: ',flops)
print('params: ',params)
MACs
MACs(Multiply accumulate operations):乘法和加法运算的次数,一个乘法与加法算一个MACs
深度学习的很多情况下,尤其是卷积神经网络,通常是先进行元素乘法,然后将结果累加起来。因此,MACS可以很好地反映卷积神经网络中的计算量。
两者关系
Flops=2*MACs
解释:每进行一次乘法,一般都会跟上一次加法,例如10次乘法,会伴随(10-1)次加法。
两者只相差1,因此近似看作两倍关系。
机器学习算法AI大数据技术
搜索公众号添加: datanlp
长按图片,识别二维码
阅读过本文的人还看了以下文章:
整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主
基于40万表格数据集TableBank,用MaskRCNN做表格检测
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
如何利用全新的决策树集成级联结构gcForest做特征工程并打分?
Machine Learning Yearning 中文翻译稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx