首先要知道:一次卷积中,卷积核的通道数由输入通道数决定,卷积核的个数输出通道数决定
参数量
参数量指的可以训练的权重个数
一般卷积,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
听讲解+自己的理解,欢迎批评指正!
版权声明:本文为weixin_42630613原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。