卷积神经网络参数个数的计算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卷积神经网络参数个数的计算相关的知识,希望对你有一定的参考价值。
参考技术A 我们在用keras进行神经网络建模后,打印模型的摘要(print(model.summary))会出现每一层参数的个数,很多初学者可能会对参数个数怎么计算的非常困惑,本文将由浅至深的讲解卷积神经网络各层参数的计算方法,对卷积神经网络结构还不了解的同学请自行百度了解。
1.什么是卷积神经网络的参数
我们都知道神经网络是一个前向传播和反向优化的过程,这个优化过程其实优化的是层与层之间的连接权重w和权重b。其实每一层连接都可以简单的抽象为:W X+b=Y
其中X为输入,Y为预测值,都可以作为训练数据输入,因此是我们已知的。在整个过程中未知的就是W和b了也是需要通过训练得到的参数。
卷积神经网络的参数因为卷积网络的特性而稍微有些特殊,但整体来讲还是对权重W和偏置b的拟合。
2.卷积层参数个数计算
卷积层是通过卷积核对原始输入进行扫描,然后获得具有局部特征的输出,预测准确性与卷积核的设置有重要关系,因此卷积核就是我们需要拟合的参数,至于参数个数怎么计算,需要细致的进行分解。
(1)卷积核个数
通常用一个卷积核无法获得输入的全部信息,因此通常会设置多个卷积核,每个卷积核都是独立的,计算方式完全一致。每个卷积核对原始输入进行处理后都会生成一个feature_map,因此卷积核的个数和feature_map的个数其实是相同的。
(2)卷积核大小
在二维神经网络中(即图像处理的常用卷积神经网络模式),通常用正方形的卷积核对原始输入进行卷积,常用的有3 3,5 5,7 7等。
(3)原始图像通道数
通道数的不同会影响子卷积核的个数,比如有是三个通道的图像,每一个通道都需要用卷积核进行处理,但卷积核的参数其实是不同的,最终对所有通道进行加和加上一个偏置就是我们最终得到的feature_map,因此参数个数实际变为3 3 3+1。其中1代表偏置,在所有通道中是共享的。
(4)最终参数个数
用卷积核个数乘上卷积核大小,其实就是最终的参数个数,本文为2 (3 3 3+1)。2代表卷积核的个数,第一个3代表通道数,第二个3和第三个3代表卷积核大小,1代表偏置。
3.池化层参数个数计算
池化层为根据池化层大小确定保留值,可以理解为对feature_map的降维,其中不涉及参数的计算。
4.全连接层参数个数计算
全连接层首先对池化层输出的数据进行flattern处理,即400 30转换为12000 1,假设输出为12维的,那么参数个数为12000 12+12,加号后边的12代表每个全连接层后都跟一个偏置b。
5.总结
无论是一维、二维还是三维卷积神经网络的哪一层参数计算,都可以用卷积层参数计算的思路解决,首先确定卷积核大小,其次确定卷积核个数,最终确定图像输入的通道数。这几个东西确定后,再求解参数就十分简单了。
本篇文章假设你已经十分了解卷积神经网络的基础知识,因此没有相关的图解,只是介绍了参数确定的思路,希望对大家有所启发。
卷积神经网络 一些参数计算
N 输入图片个数
C 输入图片的通道数
H 输入图片的高
W 输入图片的宽
N1 输入图片个数
C1 输入图片的通道数
H1 输入图片的高
W1 输入图片的宽
k 卷积核尺寸
1.进行一次卷积所计算的次数 KKC1CH1W1
2.进行一次卷积的参数 KKC1C
3.通过卷积后输出结果的尺寸
例如:
1.一直某卷积层为nn.conv2d(in_channels=3, out_channels=6, kernel_size=5),输入张量为64X3x256x256(NCH*W)
1.1 试求出输出张量的size
1.2求出卷积层的权重参数数量
1.3求出整个卷积层的乘法计算次数
以上是关于卷积神经网络参数个数的计算的主要内容,如果未能解决你的问题,请参考以下文章
Tensorflow系列4:卷积神经网络--解决参数过多问题
paddle Conv2D参数,在手撕数字识别案例中调参数;卷积神经网络的卷积核大小个数,卷积层数如何确定呢?
paddle Conv2D参数,在手撕数字识别案例中调参数;卷积神经网络的卷积核大小个数,卷积层数如何确定呢?