卷积神经网络的结构
卷积神经网络(CNN)主要由输入层、卷积层、激活函数、池化层和全连接层组成。典型结构为:
- 输入层(INPUT):接收原始图像数据(如RGB图像为3通道)。
- 卷积层(CONV):通过卷积核提取局部特征,参数包括输入/输出通道数、卷积核大小、步长和填充。
- 激活函数(RELU):引入非线性,常用ReLU函数解决梯度消失问题。
- 池化层(POOL):降维并保留主要特征,如最大池化选取局部最大值。
- 全连接层(FC):整合特征并输出分类结果。
卷积神经网络的计算
输出特征图尺寸的计算公式为:
[ N = \frac{W - F + 2P}{S} + 1 ]
- 参数说明:
- ( W ):输入尺寸(如256x256)。
- ( F ):卷积核大小(如11x11)。
- ( P ):填充值(如2)。
- ( S ):步长(如4)。
- 示例:
- 输入256x256,卷积核11x11,步长4,填充2:
[ N = \frac{256 - 11 + 2 \times 2}{4} + 1 = 63 ]
输出尺寸为63x63。
- 输入256x256,卷积核11x11,步长4,填充2:
AlexNet实例详解
AlexNet包含5个卷积层和3个全连接层,使用PyTorch实现:
self.conv1=torch.nn.Sequential(torch.nn.Conv2d(3,96,kernel_size=11,stride=4,padding=0),torch.nn.ReLU(),torch.nn.MaxPool2d(kernel_size=3,stride=2)# 输出27x27x96)- 逐层分析:
- 卷积层1:输入227x227x3,输出55x55x96(经ReLU和池化后为27x27x96)。
- 卷积层2-5:逐步缩小空间尺寸,增加通道数(如输出13x13x256、6x6x256)。
- 全连接层:将6x6x256展平为9216维向量,经两层4096神经元和ReLU、Dropout后输出50类结果。
常见卷积层设置问题
问题1:为何使用Conv2d?
- Conv1d:处理文本等一维数据,仅对宽度卷积。
- Conv2d:处理图像等二维数据,对高度和宽度同时卷积。
问题2:卷积核参数简化
nn.Conv2d(3, 6, 5)中5表示5x5的方形卷积核。若需非方形核,需显式指定(如(5, 3))。