卷积神经网络参数量和计算量的计算

卷积神经网络参数量和计算量的计算

提示:据说是科大讯飞算法面试题


题目

我们在设计一个CNN网络时,通常要考虑两个事情,

一个是这个网络需要的计算量有多大,
一个是这个模型的参数量有多少。

前者决定了网络训练的快慢(硬件设备确定的情况),
后者决定了计算设备需要多大的内存或显存

不就是算法的时间复杂度和空间复杂度吗???

本文CNN的计算量以计算机做乘加次数为单位,即完成某个操作,需要执行多少次乘法和加法操作。

参数量以参数个数为单位,要计算内存或显存的,用参数量乘以每个参数所占的字节数即可。


一、计算量

对于输入特征图f=(B,H,W,C),
卷积核张量kernel=(K,S,C,O),
其中,B是batch size大小,H,W,C分别是输入特征图的高,宽和通道数,
K,S,C,O分别是卷积操作时,卷积核的大小,移动步长(stride),特征图输入通道及输出通道数。

先分开来看一下一个数据样本每一小步需要的计算次数:

1. 首先一次卷积的计算量:

在这里插入图片描述

2. 在一个特征图上执行卷积需要进行卷积的次数:

在这里插入图片描述

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

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

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

在C个输入特征图上进行卷积之后需要将卷积的结果相加,得到一个输出特征图上卷积结果,C个相加需要C-1次加法,所以输出一个特征图需要的计算量是
在这里插入图片描述

5. 输出O个特征图需要计算的次数

在这里插入图片描述
上面的式子得到的是卷积神经网路的一层所需要的计算量,

将每层的计算量相加就可以得到整个网络的计算量。

通常包含乘加的操作有Pool,Relu,BN(含有除法),卷积等。

一般都是卷积操作占主要。

o(kN)=o(n),一层就是老大了


二、参数量

在这里插入图片描述
需要注意的是,上面计算的仅仅是模型的参数量,

若要计算模型实际需要多少显存,还要考虑特征图的大小,

因为每一层卷积的输出都需要缓存,
还要BN计算出来的均值和偏差也需要缓存,
权重的梯度也需要缓存。

通常模型参数所占用的显存比例很小。


总结

提示:重要经验:

1)卷积神经网络参数量和计算量的计算,需要清楚知道卷积怎么卷,卷积核的KSCO都是啥含义,K是卷积核大小,S是步长,C是通道,O输出通道
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰露可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值