alexnet 订阅
AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。也是在那年之后,更多的更深的神经网络被提出,比如优秀的vgg,GoogLeNet。 这对于传统的机器学习分类算法而言,已经相当的出色。 展开全文
AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。也是在那年之后,更多的更深的神经网络被提出,比如优秀的vgg,GoogLeNet。 这对于传统的机器学习分类算法而言,已经相当的出色。
信息
提出者
Hinton及其学生
类    型
神经网络
外文名
AlexNet
提出时间
2012
AlexNet模型简介
AlexNet中包含了几个比较新的技术点,也首次在CNN中成功应用了ReLU、Dropout和LRN等Trick。同时AlexNet也使用了GPU进行运算加速。AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。AlexNet主要使用到的新技术点如下:(1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。(2)训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。(3)在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。(4)提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。(5)使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算。AlexNet使用了两块GTX 580 GPU进行训练,单个GTX 580只有3GB显存,这限制了可训练的网络的最大规模。因此作者将AlexNet分布在两个GPU上,在每个GPU的显存中储存一半的神经元的参数。因为GPU之间通信方便,可以互相访问显存,而不需要通过主机内存,所以同时使用多块GPU也是非常高效的。同时,AlexNet的设计让GPU之间的通信只在网络的某些层进行,控制了通信的性能损耗。 (6)数据增强,随机地从256*256的原始图像中截取224*224大小的区域(以及水平翻转的镜像),相当于增加了2*(256-224)^2=2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值。同时,AlexNet论文中提到了会对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,这个Trick可以让错误率再下降1%。 [1]  AlexNet结构图(3张)
收起全文
精华内容
下载资源
问答
  • AlexNet

    2019-11-12 07:49:17
    AlexNet

    AlexNet


    AlexNet-Model(pytorch版本)


    参考文献格式:

    《ImageNet Classification with Deep Convolutional Neural Network》
    —基于卷积神经网络的图像分类
    作者:Alex Krizhevsky
    单位:加拿大多伦多大学
    发表会议及时间:NIPS 2012

    一 论文导读

    1.论文导读及研究背景介绍

    AlexNet于2012年被提出,开启了深度学习的热潮。

    在2012年之前对于图像的处理主要还是关于支持向量机的相关算法,支持向量机独立风骚十几年。由此可见,支持向量机有其特别出众发的优点。

    但是在那个时候,人们对于图像处理并不自信,图像处理最基本的分类任务的最高准确率还只是出于89%左右,还是在一定的限定条件下。

    16年残差神经网络让图像分类准确率达到96%及其以上,宣告了这类课题(识别图片等)的结束

    CNN卷积是一种特征工程,用来提取特征

    补充:LeNet简介
    在这里插入图片描述
    LeNet:径向基神经网络
    研究一个网络最重要的就是特征工程,后面的分类用其他任何的分类器效果都不会差(有好的特征工程的情况下)

    为什么说CNN那么强呢?看起来如此简单的结构,甚至让人不可思议,就这样的结构为什么能取代图像处理方面的复杂的特征工程,就是因为随着CNN的加深,卷积神经网络逐层提取了边缘、轮廓、高级语义等越来越高级的特征信息。就是因为CNN能提取到大部分的图像特征工程的特征信息,只要随着CNN层数的加深。

    在这里插入图片描述
    ImageNet是人文、艺术类数据集,商业价值不高

    Benchmark具有商业价值的模型
    Baseline就是通用的普遍的模型
    在这里插入图片描述
    两个小型数据集,可以用来测测自己写的模型

    在这里插入图片描述
    在这里插入图片描述
    Top1:小类
    Top5:大类,所以Top5>Top1

    图像分类的网络发展:(都是由卷积核构成的)
    在这里插入图片描述
    常用Vgg,
    像GoogleNet、ResNet已经过于高级,适合比赛、论文。---- emmmm,2020的我对这句话感到羞愧!

    二 论文精读

    三 代码实现

    
    from torch import nn
    
    # 定义Alexnet网路结构
    class AlexNet(nn.Module):
        def __init__(self, num_classes=5):
            super(AlexNet, self).__init__()
            self.features = nn.Sequential(
                nn.Conv2d(3, 64, kernel_size=3, stride=2, padding=1),  # 修改了这个地方,不知道为什么就对了
                # raw kernel_size=11, stride=4, padding=2. For use img size 224 * 224.
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=3, stride=2),
    
                nn.Conv2d(64, 192, kernel_size=5, padding=2),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=3, stride=2),
    
                nn.Conv2d(192, 384, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
    
                nn.Conv2d(384, 256, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
    
                nn.Conv2d(256, 256, kernel_size=3, padding=1),
                nn.ReLU(inplace=True),
                nn.MaxPool2d(kernel_size=3, stride=2), )
            self.classifier = nn.Sequential(
                nn.Dropout(),
                nn.Linear(256 * 1 * 1, 4096),
                nn.ReLU(inplace=True),
                nn.Dropout(),
                nn.Linear(4096, 4096),
                nn.ReLU(inplace=True),
                nn.Linear(4096, num_classes), )
    
        def forward(self, x):
            x = self.features(x)
            x = x.view(x.size(0), 256 * 1 * 1)
            x = self.classifier(x)
            # return F.log_softmax(inputs, dim=3)
            return x
    

    四 问题思索

    展开全文
  • Alexnet

    2019-10-29 08:39:06
    Alexnet的主要贡献 1、使用了非线性激活函数RELU 2、防止过拟合的方法“Dropout”,Data Augumentation(数据增广) 3、其他:多GPU实现,LRN层的使用 使用ReLU激活函数 传统的神经网络普遍使用sigmoid或者tanh等非...

    https://blog.csdn.net/daydayup_668819/article/details/79744095

    Alexnet的主要贡献

    1、使用了非线性激活函数RELU
    2、防止过拟合的方法“Dropout”,Data Augumentation(数据增广)
    3、其他:多GPU实现,LRN层的使用

    使用ReLU激活函数

    传统的神经网络普遍使用sigmoid或者tanh等非线性函数作为激活函数,但是容易出现梯度消失或者梯度爆炸的情况。在Alexnet中使用ReLU作为激活函数,其导数为1,计算量大大减小,收敛速度会比Sigmoid等快很多。

    数据增广

    当训练数据有限时,可以通过一些变换从已有的训练数据集中生成一些新的数据,以快速地扩充训练数据。其中,最简单、通用的图像数据变形的方式:水平翻转图像,从原始图像中随机裁剪、平移变换,颜色、光照变换。
    AlexNet在训练时,在数据扩充(data augmentation)这样处理:
    (1)随机裁剪,对256×256的图片进行随机裁剪到224×224,然后进行水平翻转,相当于将样本数量增加了((256-224)^2)×2=2048倍;
    (2)测试的时候,对左上、右上、左下、右下、中间分别做了5次裁剪,然后翻转,共10个裁剪,之后对结果求平均。作者说,如果不做随机裁剪,大网络基本上都过拟合;
    (3)对RGB空间做PCA(主成分分析),然后对主成分做一个(0, 0.1)的高斯扰动,也就是对颜色、光照作变换,结果使错误率又下降了1%。

    重叠池化

    一般的池化(Pooling)是不重叠的,池化区域的窗口大小与步长相同。在AlexNet中使用的池化(Pooling)却是可重叠(Overlapping)的,也就是说,在池化的时候,每次移动的步长小于池化的窗口长度。AlexNet池化的大小为3×3的正方形,每次池化移动步长为2,这样就会出现重叠。重叠池化可以避免过拟合

    Dropout

    引入Dropout主要是为了防止过拟合。在神经网络中Dropout通过修改神经网络本身结构来实现,对于某一层的神经元,通过定义的概率将神经元置为0,这个神经元就不参与前向和后向传播,就如同在网络中被删除了一样,同时保持输入层与输出层神经元的个数不变,然后按照神经网络的学习方法进行参数更新。在下一次迭代中,又重新随机删除一些神经元(置为0),直至训练结束。
    Dropout也可以看成是一种模型组合,每次生成的网络结构都不一样,通过组合多个模型的方式能够有效地减少过拟合,Dropout只需要两倍的训练时间即可实现模型组合(类似取平均)的效果,非常高效。

    Alexnet的特点与创新

    在这里插入图片描述

    Alexnet结构图

    在这里插入图片描述

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,362
精华内容 2,944
关键字:

alexnet