卷积神经网络基础题——如何计算CNN的参数量?
卷积神经网络基础
如何计算CNN的参数量?
先从简单的单层结构分析:
CNN的单层结构与标准的神经网络单层结构非常相似:
卷积运算对应着上式中的乘积运算,滤波器组数值对应着权重,所选的**函数为ReLU
下面来计算一下上图中参数的数目:
每个滤波器组有3x3x3=27个参数,还有1个偏移量b,则每个滤波器组有27+1=28个参数,两个滤波器组总共包含28x2=56个参数。
我们发现,在CNN中,参数数目只由滤波器组决定,选定滤波器组后,参数数目与输入图片尺寸无关。所以,就不存在由于图片尺寸过大,造成参数过多的情况。
对于更一般的卷积神经网络架构(如下图的图片识别CNN网络架构):
根据图中的顺序分析计算:
- 输入层(input):input层是没有引进变量的
- 卷积(convolution):卷积层则引入了"卷积核/filter",假设卷积核大小为,图片有个通道(channels)/维度,而选用的"卷积核/filter"有个,再加上bias,可以得到引进的参数有:个
- **(activation):仅对原来的矩阵做了一个变换,不会引进新的参数
- 池化(pooling):与**层同理,仅对原来的矩阵做了一个变换,不会引进新的参数
- 拉平(Flatten):拉平操作仅仅对矩阵进行了reshape,也不会引进新的变量
- 全连接(Fully Connected):全连接层就是对前后神经元做了仿射变换,引进的参数有权重和偏置,假设n个神经元连接m个神经元,则引入的参数有
- 计算分类概率(Softmax):仅对原来的矩阵做了一个变换,不会引进新的参数