模型的参数量parameters和计算量FLOPs与MAC

文章目录

  • 参数量
    • 卷积的参数量计算:
    • BN的参数量计算
    • FC的参数量计算
  • 计算量
    • FLOPs
      • 卷积的FLOPs
      • FC的FLOPs
    • MAC
      • 卷积
      • FC

首先要知道:一次卷积中,卷积核的通道数由输入通道数决定,卷积核的个数输出通道数决定

参数量

参数量指的可以训练的权重个数
一般卷积,BN,FC需要计算参数量,其他操作基本都是提前设置好的

卷积的参数量计算:

主要取决于卷积核的尺寸K
因此卷积操作的参数量为***卷积核尺寸K×K×输入通道数×输出通道数+输出通道数(偏置)***

BN的参数量计算

BN的需要训练的参数是缩放因子γ,和缩放偏移量β,BN在卷积操作之后,它是对卷积的输出通道进行缩放与平移,因此BN的参数量由输出通道数决定,为***2×输出通道数***

FC的参数量计算

FC的每个神经元都要与下一层的每个神经元进行连接,因此参数量为***输入通道数×输出通道数+输出通道数***

计算量

计算量指的需要进行的加乘操作的次数,有FLOPs与MAC两个指标,前者是浮点运算次数,后者是内存数据的进出量(也称内存访问成本)

FLOPs

卷积的FLOPs

输出特征图上的每个特征点都需要进行乘加操作,这个特征点算几次取决于卷积核,下式中减一是因为n个数相加需要n-1次加法,
一个特征点的FLOPs:(卷积核的尺寸K×K×输入通道数×2-1
特征图上每个点的FLOPs:(卷积核的尺寸K×K×输入通道数×2-1)×特征图的宽×特征图的高×特征图的通道数(或者说是输出通道数)

FC的FLOPs

一个神经元的:2×输入通道数-1
输出通道数个神经元:(2×输入通道数-1)×输出通道数

MAC

卷积

需要把数据x与权重w读进来,把输出的特征图读出去,第一部分为输入特征图,第二部分为输出特征图,第三部分为权重
在这里插入图片描述

FC

在这里插入图片描述
需要用哪个衡量,取决于设备,嵌入式设备一般用MAC,读取比较快的设备,就用FLOPs衡量
pytorch有封装好的计算工具:https://github.com/sovrasov/flops-counter.pytorch

听讲解+自己的理解,欢迎批评指正!

你可能感兴趣的:(工具)