本文建议阅读时间 20 min

论文地址:

https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

2012 年, AlexNet 横空出世。这个模型的名字来源于论⽂第一作者的姓名 Alex Krizhevsky。AlexNet 使⽤了 8 层卷积神经⽹络,并以很⼤的优势赢得了 ImageNet 2012 图像识别挑战赛冠军。

  • top1: 37.5%

  • top5: 17.0%

  • 6 千万参数 650000 个神经元

细化的结构图,来自互联网,侵删

与 LeNet 相比较

第⼀,与相对较小的 LeNet 相⽐, AlexNet 包含 8 层变换,其中有 5 层卷积和 2 层全连接隐藏层,以及 1 个全连接输出层。AlexNet 第⼀层中的卷积窗⼝形状是 11×11。因为 ImageNet 中绝⼤多数图像的⾼和宽均⽐ MNIST 图像 的⾼和宽⼤ 10 倍以上, ImageNet 图像的物体占⽤更多的像素,所以需要更⼤的卷积窗⼝来捕获物体。第⼆层中的卷积窗⼝形状减⼩到 5×5 ,之后全采⽤  3×3。此外,第⼀、第⼆和第五个卷积层之后都使用了窗⼝形状为 3×3 、步幅为 2 的最⼤池化层。⽽且, AlexNet 使用的卷积通道数也⼤于 LeNet 中的卷积通道数数⼗倍。

第⼆,AlexNet 将 sigmoid 激活函数改成了更加简单的 ReLU 激活函数。⼀⽅⾯, ReLU 激活函数的计算更简单,例如它并没有 sigmoid 激活函数中的求幂运算。另⼀⽅⾯,ReLU 激活函数在不同的参数初始化⽅法下使模型更容易训练。这是由于当 sigmoid 激活函数输出极接近 0 或 1 时,这些区域的梯度几乎为 0,从⽽造成反向传播⽆法继续更新部分模型参数;⽽ ReLU 激活函数在正区间的梯度恒为 1。因此,若模型参数初始化不当, sigmoid 函数可能在正区间得到几乎为 0 的梯度,从⽽令模型⽆法得到有效训练。

Relu 比 Sigmoid 的效果好在哪里?
Sigmoid 的导数只有在 0 的附近时有较好的激活性,而在正负饱和区域的梯度趋向于 0, 从而产生梯度弥散的现象,而 relu 在大于 0 的部分梯度为常数,所以不会有梯度弥散现象。Relu 的导数计算的更快。Relu 在负半区的导数为 0, 所以神经元激活值为负时,梯度为 0, 此神经元不参与训练,具有稀疏性。

第三, AlexNet 通过丢弃法(dropout)来控制全连接层的模型复杂度。⽽ LeNet 并没有使用丢弃法。

第四,AlexNet 引⼊了⼤量的图像增⼴,如翻转、裁剪和颜⾊变化,从⽽进⼀步扩⼤数据集来缓解过拟合。

代码实现

import time
import torch
from torch import nn, optim
import torchvisionclass AlexNet(nn.Module):def __init__(self):super(AlexNet, self).__init__()self.conv = nn.Sequential(nn.Conv2d(1, 96, 11, 4), # in_channels, out_channels, kernel_size, stride, paddingnn.ReLU(),nn.MaxPool2d(3, 2), # kernel_size, stride# 减小卷积窗口,使用填充为2来使得输入与输出的高和宽一致,且增大输出通道数nn.Conv2d(96, 256, 5, 1, 2),nn.ReLU(),nn.MaxPool2d(3, 2),# 连续3个卷积层,且使用更小的卷积窗口。除了最后的卷积层外,进一步增大了输出通道数。# 前两个卷积层后不使用池化层来减小输入的高和宽nn.Conv2d(256, 384, 3, 1, 1),nn.ReLU(),nn.Conv2d(384, 384, 3, 1, 1),nn.ReLU(),nn.Conv2d(384, 256, 3, 1, 1),nn.ReLU(),nn.MaxPool2d(3, 2))# 这里全连接层的输出个数比LeNet中的大数倍。使用丢弃层来缓解过拟合self.fc = nn.Sequential(nn.Linear(256*5*5, 4096),nn.ReLU(),nn.Dropout(0.5),nn.Linear(4096, 4096),nn.ReLU(),nn.Dropout(0.5),# 输出层。由于这里使用Fashion-MNIST,所以用类别数为10,而非论文中的1000nn.Linear(4096, 10),)def forward(self, img):feature = self.conv(img)output = self.fc(feature.view(img.shape[0], -1))return output

模型特性

  • SGD, 128 batch-size, momentum=0.9, weight decay=0.0005, 学习率 = 0.01

  • 所有卷积层都使用 ReLU 作为非线性映射函数,使模型收敛速度更快

  • 在多个 GPU 上进行模型的训练,不但可以提高模型的训练速度,还能提升数据的使用规模

  • 使用 LRN 对局部的特征进行归一化,结果作为 ReLU 激活函数的输入能有效降低错误率

  • 重叠最大池化(overlapping max pooling),即池化范围 z 与步长 s 存在关系 z>s 避免平均池化(average pooling)的平均效应

  • 使用随机丢弃技术(dropout)选择性地忽略训练中的单个神经元,避免模型的过拟合(也使用数据增强防止过拟合)

贡献 / 意义

  • AlexNet 跟 LeNet 结构类似,但使⽤了更多的卷积层和更⼤的参数空间来拟合⼤规模数据集 ImageNet。它是浅层神经⽹络和深度神经⽹络的分界线。

  • 虽然看上去 AlexNet 的实现⽐ LeNet 的实现也就多了⼏⾏代码而已,但这个观念上的转变和真正优秀实验结果的产⽣令学术界付出了很多年。

备注:公众号菜单包含了整理了一本AI小抄非常适合在通勤路上用学习

往期精彩回顾那些年做的学术公益-你不是一个人在战斗适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(第一部分)备注:加入本站微信群或者qq群,请回复“加群”加入知识星球(4500+用户,ID:92416895),请回复“知识星球”

喜欢文章,点个在看

卷积神经网络之 - Alexnet相关推荐

  1. DL之AlexNet:利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型)

    DL之AlexNet:利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型) 目录 利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型) 设计思路 处 ...

  2. [pytorch、学习] - 5.6 深度卷积神经网络(AlexNet)

    参考 5.6 深度卷积神经网络(AlexNet) 在LeNet提出后的将近20年里,神经网络一度被其他机器学习方法超越,如支持向量机.虽然LeNet可以在早期的小数据集上取得好的成绩,但是在更大的真实 ...

  3. alexnet训练多久收敛_卷积神经网络之AlexNet

    由于受到计算机性能的影响,虽然LeNet在图像分类中取得了较好的成绩,但是并没有引起很多的关注. 知道2012年,Alex等人提出的AlexNet网络在ImageNet大赛上以远超第二名的成绩夺冠,卷 ...

  4. 卷积核和全连接层的区别_「动手学计算机视觉」第十六讲:卷积神经网络之AlexNet...

    前言 前文详细介绍了卷积神经网络的开山之作LeNet,虽然近几年卷积神经网络非常热门,但是在LeNet出现后的十几年里,在目标识别领域卷积神经网络一直被传统目标识别算法(特征提取+分类器)所压制,直到 ...

  5. 卷积神经网络之AlexNet

    由于受到计算机性能的影响,虽然LeNet在图像分类中取得了较好的成绩,但是并没有引起很多的关注. 知道2012年,Alex等人提出的AlexNet网络在ImageNet大赛上以远超第二名的成绩夺冠,卷 ...

  6. PyTorch实战福利从入门到精通之八——深度卷积神经网络(AlexNet)

    在LeNet提出后的将近20年里,神经网络一度被其他机器学习方法超越,如支持向量机.虽然LeNet可以在早期的小数据集上取得好的成绩,但是在更大的真实数据集上的表现并不尽如人意.一方面,神经网络计算复 ...

  7. (二)卷积神经网络之——AlexNet

    目录 概述 AlexNet特点 激活函数 sigmoid激活函数 ReLu激活函数 数据增强 层叠池化 局部相应归一化 Dropout Alexnet网络结构 网络结构分析 AlexNet各层参数及其 ...

  8. 深度卷积神经网络(AlexNet)与卷积神经网络(LeNet)的区别及其代码实现(可直接复制运行)

    AlexNet出现的背景 LeNet在小批量样本的处理中表现尚可,但当样本过于复杂时处理起来结果不尽如人意. AlexNet出现于2010年后,该模型对较大批量数据(特别是图片较多和所包含信息较多的情 ...

  9. TensorFlow实战:经典卷积神经网络(AlexNet、VGGNet)

    下面表格是两个网络的简单比较: 特点 AlexNet VGGNet 论文贡献 介绍完整CNN架构模型(近些年的许多CNN模型都是依据此模型变种来的)和多种训练技巧 CNN模型复兴的开山之作 使用GPU ...

  10. TensorFlow实战:Chapter-4(CNN-2-经典卷积神经网络(AlexNet、VGGNet))

    引言 AlexNet AlexNet 简介 AlexNet的特点 AlexNet论文分析 引言 介绍 数据集 网络架构 注解 注解 减少过拟合 训练细节 结果 讨论 参考文献略 AlexNet在Ten ...

最新文章

  1. 医院数据中心机房建设资料汇总(31篇)
  2. 在移动硬盘里移动视频文件到移动硬盘 另外一个文件夹 显示正在计算_古风玩数码 篇九十六:物超所值?移动固态硬盘到底值不值?阿斯加特移动硬盘AP2上手体验_固态硬盘...
  3. MapReduce基础开发之四参数传递
  4. 设计模式总结之Bridge Pattern(桥接模式)
  5. OpenCASCADE:拓扑 API之对象修改
  6. ORACLE利用STANDBY端RMAN备份进行数据恢复
  7. 在线文档显示组件 FlexPaper
  8. Codeforces Round #387 (Div. 2) A+B+C+D!
  9. PostgreSQL的执行计划分析
  10. html风格的滚动条
  11. 写好PPT的四大要点
  12. 倍福--编码器模块的使用
  13. Unity实时涂鸦绘画插件:RealTime Painting
  14. 化学分子溶解度预测模型(python-Rdkit构建)
  15. 信息安全术语中英文词条对照表
  16. cobalt strick 4.0 系列教程(4)---监听器和基础设施管理
  17. 【微信小程序教程】点击按钮修改view标签背景颜色
  18. 办公室实现无线网络全面覆盖的方案
  19. 基于PHP的客户分销商管理系统
  20. 计算机如何显示e盘文档,我把电脑E盘里文件隐藏了,怎么弄可以显示出来!

热门文章

  1. thinkPHP源码目录介绍
  2. 给ThinkPad E470C 换个高分屏(1080P)
  3. 03-29复利计算单元测试
  4. Centos6.5搭建bugzilla
  5. html5 canvas 实现一个简单的叮当猫头部
  6. Javascript 面向对象编程定义接口的一种方法
  7. Linux 重新挂载分区的方法
  8. 关于交集(Intersect)和差集(Except)
  9. Ajax原理详细说明
  10. 第六天学习Java的笔记(循环语句)