CNN
CNN参数个数和通过CNN的计算图大小计算
输入图片大小 W×W,Filter大小 F×F,步长 S,padding的像素数 P,深度D,那么经过CNN后的图像维度为:
$$ N = (W − F + 2P )/S+1
$$ 参数个数为
$$ FFD
$$ 例:CNN网络是大家常用的神经网络,对于每一层之后,我们都需要计算一些,那么请问下,如果输入图片尺寸为
255*255
,有rgb通道,在经过步长为4,边界填充为0,11*11
的卷积层之后,图像尺寸是多少?该卷积核的参数量是多少?卷积后得到的图像大小:$(255-11)/4+1 $
卷积核参数量:$
卷积神经网络特点理论依据
- 局部连接
卷积神经网络的每个神经元(也就是每个滤波器)都只与输入数据的局部相连(也就是感受野)。
理论依据:由于图片文本特征的局部性,因此只需要通过局部就能够提取出相应的特征。
- 参数共享
卷积神经网络一个滤波器在输入的各个部分提取的特征时使用的参数时共享的,这样有效的减少了参数个数。
理论依据: 不同位置的相同特征表显是相同的,因此使用相同参数的滤波器进行特征提取是完全可以的。
参数共享机制也是CNN自带的一种防止过拟合的机制
滤波器与感受野
卷积核由多个滤波器构成,卷积层的深度就是滤波器的个数。感受野用来表示网络内部的不同神经元对原图像的感受范围的大小的区域。
例如: 输入为
32*32*3
,卷积核为5520,那么滤波器的尺寸是5*5
,滤波器的个数为20。例如:两层CNN,一层为
3*3
,第二层为2*2
,那么第一层的感受野就是3,第二层的感受野就是5
什么是池化层?都有哪些?分别有什么作用?
池化层:卷积神经网络中采用固定窗口来以下采样的的方式进行下采样,丢弃无用信息,降低输入空间尺寸,减少自然资源消耗,有效降低过拟合的手段 。
常用的池化层参数:窗口2*2 步长2 -> 数据输入宽高缩小1倍
池化的最主要作用就是减少参数个数和提取一些特定类型的特征,删除掉其他特征。主要包括max pooling、average pooling、global average pooling,max pooling的主要作用是是提取最具有代表性的特征,average pooling的作用主要是提取最具有普适性的特征,global average pooling是用来分类的,因为随着网络的加深如果使用全连接网络,参数过多很难进行训练。
1*1的卷积核有什么作用?
减少特征维度
例如: 上一层的输出为100x100x128,经过具有256个通道的5x5卷积层之后(stride=1,pad=2),输出数据为100x100x256 200。而假如上一层输出先经过具有32个通道的1x1卷积层,再经过具有256个输出的5x5卷积层,那么输出数据仍为为100x100x256,但卷积参数量已经减少为128x1x1x32 + 32x5x5x256= 204800,大约减少了4倍。