神经网络各层的作用
卷积层(conv):用于特征的提取
池化层(pooling):对特征图进行压缩,一方面减小特征图的大小,另一方面进行特征压缩,提取主要特征
激活函数:加入非线性因素的,因为线性模型的表达能力不够
全连接层(full connected layer):分类器的作用,用于把前面提取的特征综合起来。
卷积层尺寸的计算原理
输入矩阵的格式一般为四维:样本数,图像高度,图像宽度,图像通道数。在pytorch中,通道数一般在图像高度和图像宽度前面。
输出矩阵的维度顺序与前面一致,样本数不发生变化,但图像高度、图像宽度、图像通道数会发生变化。
权重矩阵(卷积核)的格式:卷积核高度、卷积核宽度、输入通道数、输出通道数。
三者的关系:
卷积核的通道数是由输入矩阵的通道数决定(卷积核的通道数 = 输入矩阵的通道数)。
输出矩阵的通道数由卷积核的数量决定(输出矩阵通道数 = 卷积核的数量)。
图像高度、宽度变化关系:
宽度变化与高度变化一致,故省略。
卷积计算
以AlexNet为例:
输入图片的尺寸为,
卷积核的数目为96个,
每个卷积核的大小为,
已知stride=4,padding=0。
则输出的高度和宽度为:,高度为卷积核的数量,即96。
特殊例子
的卷积核:将输入矩阵的通道数量缩减,但宽度高度保持不变。
全连接层:全连接层可以被视为极端的卷积层,其卷积核尺寸就是输入矩阵的尺寸,因此输出的高度和宽度都为1。
可以看出,卷积层会从高度、宽度、深度三个维度来改变像素输入的维度。特别是深度的改变,是由卷积核的数量决定的。
而对于池化层,它只会在高度和宽度上对像素矩阵进行改变,深度方面并没有变化。