卷积网络的发展历史-AlexNet

简介

2012 年,Krizhevsky Hinton 推出了 AlexNet,引起了许多学者对深度学习的研究,可以算是深度学习的热潮的起始标志。在图像分类领域不得不提的就是ImageNet大规模视觉挑战赛(ILSVRC),它被称为深度学习在图像分类任务研究方面进展的标杆。AlexNet网络参加了ILSVRC2012年大赛,以高出第二名10%的性能优势取得了冠军。AlexNet网络也是VGGNet、GoogLeNet、ResNet、DenseNet等经典网络的基础和开端。

特点

AlexNet 的特点如下所示:

卷积网络的发展历史-AlexNet_第1张图片

1)采用双GPU网络结构,从而可以设计出更“大”、更“深”的网络(相较于当时的算力来说);

2)采用ReLu代替tanh,稍微解决梯度消失问题(Gradient Vanishing Problem),加快网络收敛速度;

3)提出局部相应归一化(LRN, Local Response Normalization);

4)令pooling操作中的stride小于池化核的大小,从而使相邻的池化区域存在重叠部分,这一操作称为Overlapping Pooling

5)对训练数据进行随机裁剪(Random Crop),将训练图像由256×256裁剪为224×224,并做随机的镜像翻转(Horizontal Reflection)。并在测试时,从图像的四个角以及中心进行裁剪,并进行镜像翻转,这样可以得到10Patch,将这些 Patch 的结果进行平均,从而得到最终预测结果;

6)对训练图像做PCA(主成分分析),利用服从 (0,0.1) 的高斯分布的随机变量对主成分进行扰动。这一操作能减少指标Top-11%错误率;

7)利用dropout 避免网络过拟合。

代码

 self.features = nn.Sequential(
            nn.Conv2d(in_channels=3, out_channels=96, kernel_size=11, stride=4, padding=2),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(3, 2),
            nn.Conv2d(96, 256, 5, 1, 2),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(3, 2),
            nn.Conv2d(256, 384, 3, 1, 1),
            nn.ReLU(inplace=True),
            nn.Conv2d(384, 384, 3, 1, 1),
            nn.ReLU(inplace=True),
            nn.Conv2d(384, 256, 3, 1, 1),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(3, 2)
        )

你可能感兴趣的:(Python,深度学习,人工智能)