01 引言 在看论文时,经常会看到计算CNN的parameters、FLOPs等评价指标,用来评价神经网络在推理运算上的速度与性能。本文将要来一一介绍这些指标以及相应的计算公式。 02 参数量定义 02 参数量计算举例 接下来我们来看个具体的例子吧,假设input feature map的维度为5× 5× 3、kernel数量为7个且kernel size为3× 3、output feature map的维度为3× 3× 7,这样一层的计算量为3× 3× 3× 7 + 7 = 196。 03 参数量计算实操 Parameters可以使用pytorch library torchinfo来进行计算,示例代码如下 # 安裝 torchinfo $ pip install torchinfo # ================================ from torchinfo import summary import torch import torch.nn as nn # 自定义模型 class MyModel(nn.Module): def __init__(self, in_channels, out_channels): super(MyModel, self).__init__() self.layer = nn.Conv2d(in_channels, out_channels, (3, 3)) def forward(self, x): x = self.layer(x) model = MyModel(3, 7) batch_size = 16 summary(model, input_size=(batch_size, 3, 5, 5)) 输出如下 04 FLOPs定义 FLOPs全名为floating point operations(浮点数的运算数),指模型前向传播的计算量、计算速度,用于衡量模型的复杂度。
05 FLOPs计算示例 FLOPs的计算分为卷积核权重与bias两部分(Wx+b),令input feature map的维度为H_in× W_in× C_in、kernel size为K_h× K_w,且总共有C_out个kernel、output feature map的维度为H_out× W_out× C_out。 接着是bias的计算量,bias只有加法的计算,在进行一次卷积运算时,若有bias则加1。因此考虑有bias后卷积层的计算量为(K_h× K_w× C_in)次乘法+(K_h× K_w× C_in -1 +1)次加法= 2× K_h× K_w× C_in。 因此输出feature map的总计算量就会是2× K_h× K_w× C_in× H_out× W_out× C_out。 上述过程,使用公式表示如下 06 总结 您学废了嘛? 点击上方小卡片关注我 万水千山总关情,点个在看行不行。 |
|
来自: mynotebook > 《待分类》