神经网络中参数量以及计算量的计算

1、参数量的计算

1.1 卷积网络

假设卷积核的大小为 k*k, 输入channel为M, 输出channel为N。

(1)bias为True时:

则参数数量为:k×k×M×N + N(bias的数量与输出channel的数量是一样的)

(2)bias为False时:

则参数数量为:k×k×M×N

(3)当使用BN时,还有两个可学习的参数α和β,参数量均为N

则参数数量为:k×k×M×N + 3×N

常用网络架构的参数数量:

AlexNet:62369155

VGG16:138357544

ResNet10(BasicBlock):14356544

ResNet18(BasicBlock):33161024

ResNet34(BasicBlock):63470656

ResNet50(Bottleneck):46159168

ResNet101(Bottleneck):85205312

ResNet152(Bottleneck):117364032

1.2 全连接层

假设 输入神经元数为M,输出神经元数为N,则

(1)bias为True时:

则参数数量为:M*N + N(bias的数量与输出神经元数的数量是一样的)

(2)bias为False时:

则参数数量为:M×N

2、计算量

2.1 卷积

假设输入特征图(B,C,H,W),卷积核大小为K×K, 输入通道为C,输出通道为N,步长stride为S, 输出特征图大小为H2,W2.

(1)一次卷积的计算量

一个k×k的卷积,执行一次卷积操作,需要k×k次乘法操作(卷积核中每个参数都要和特征图上的元素相乘一次),k×k−1 次加法操作(将卷积结果,k×k 个数加起来)。所以,一次卷积操作需要的乘加次数:(K×K)+(K×K−1)=2×K×K−1

(2)在一个特征图上需要执行卷积需要卷积的次数

在一个特征图上需要执行的卷积次数:((H-k+Ph)/S +1 )×((H-k+Pw)/S +1),Ph,Pw表示在高和宽方向填充的像素,此处假定了宽高方向滑动步长和核的宽高是一样,若不同,调整一下值即可。若不能整除,可向下取整。

(3)C个特征图上进行卷积运算的次数

C个输入特征图上进行卷积运算的次数为C

(4)输出一个特征图通道需要的加法次数

在C个输入特征图上进行卷积之后需要将卷积的结果相加,得到一个输出特征图上卷积结果,C个相加需要C-1次加法,计算量为 :(C-1)×H2×W2

(5)输出N个特征图需要计算的次数

N×((C-1)×H2×W2 + (2×K×K−1)×((H-k+Ph)/S +1 )×((H-k+Pw)/S +1) ×C)
(6)一个batch需要计算的次数

B×N×((C-1)×H2×W2 + (2×K×K−1)×((H-k+Ph)/S +1 )×((H-k+Pw)/S +1) ×C)

2.1 全连接

假设 输入神经元数为M,输出神经元数为N,则

(1)先执行M次乘法;

(2)再执行M-1次加法

(3)加上bias,计算出一个神经元的计算量为 (M+M-1+1)

(4)N个输出神经元,则总的计算量为 2M×N

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值