AlexNet

# 网络架构(图截原文

  • 在两个GPU上跑
  • 卷积层 C2、C4、C5中的卷积核只和位于同一GPU的上一层的FeatureMap相连,C3的卷积核与两个GPU的上一层的FeautureMap都连接

网络架构讲解的很清楚:卷积神经网络经典回顾之AlexNet - 知乎 (zhihu.com)

手撕 CNN 经典网络之 AlexNet(理论篇) - 知乎 (zhihu.com) 这篇讲的更好,以下所有📒都是摘自这个🔗

第一层讲解 C1

这一层要做:

conv→ReLU→LRN→Pooling

输入 : 227*227*3

操作:

卷积)96@11*11*3 padding=0 stride=4

计算输出:(227-11+2*0+4)/4 = 55

输出:55*55*96

**(ReLu)**卷积层输出的特征图输入到ReLu函数

(LRN)

  • 对局部神经元创建竞争机制,s.t.响应比较大的值变得相对更大,并抑制其他反馈比较小的神经元,增强模型的泛化能力
  • LRN的输出:55*55*96(输出不变)
  • 输出分为2组,每组大小:55*55*48,分别位于单个GPU上

(池化)

  • 输入:55*55*96(分为两组: 55*55*48**)**
  • 使用3*3,stride=2的池化单元
  • (重叠池化)stride<pooling_size
  • ++根据公式计算输出++:

(55-3+2*0+2)/2=27

27*27*96(输出两组:27*27*48)

++小结论吧:pool_size=3 stride=2 的池化层,池化以后输出尺寸的长宽各减少一半++

第二层讲解 C2

该层的处理流程是:卷积-->ReLU-->局部响应归一化(LRN)-->池化

我的理解是,图中只画出了一次卷积之后的输出结果。

卷积 :两组输入均是27x27x48,各组分别使用128个5x5x48的卷积核进行卷积,padding=2,stride=1,根据公式:(input_size + 2 * padding - kernel_size) / stride + 1=(27+2*2-5)/1+1=27,得到每组输出是27x27x128。

ReLU:将卷积层输出的FeatureMap输入到ReLU函数中。

局部响应归一化:使用参数k=2,n=5,α=0.0001,β=0.75进行归一化。每组输出仍然是27x27x128。

池化 :使用3x3,stride=2的池化单元进行最大池化操作(max pooling)。注意这里使用的是重叠池化,即stride小于池化单元的边长。根据公式:(27+2*0-3)/2+1=13,每组得到的输出为13x13x128。

它这边的池化也好理解,pool_size=3,stride=2,padding=0,输出的图像,高宽各减少一半,通道数不变。所以只画出了卷积的结果,也算情有可原。

第三层 C3

该层的处理流程是: 卷积-->ReLU

卷积 :输入是13x13x256,使用384个3x3x256的卷积核进行卷积,padding=1,stride=1,根据公式:(input_size + 2 * padding - kernel_size) / stride + 1=(13+2*1-3)/1+1=13,得到输出是13x13x384。

ReLU :将卷积层输出的FeatureMap输入到ReLU函数中。将输出其分成两组,每组FeatureMap大小是13x13x192,分别位于单个GPU上。

(我脑子累了,只能粘贴粘贴📒了,没办法画了)

第四层 C4

该层的处理流程是:卷积-->ReLU

卷积 :两组输入均是13x13x192,各组分别使用192个3x3x192的卷积核进行卷积,padding=1,stride=1,根据公式:(input_size + 2 * padding - kernel_size) / stride + 1=(13+2*1-3)/1+1=13,得到每组FeatureMap输出是13x13x192。(分析的是一个组的情况)

ReLU:将卷积层输出的FeatureMap输入到ReLU函数中。

第五层 C5

该层的处理流程是:卷积-->ReLU-->池化

卷积 :两组输入均是13x13x192,各组分别使用128个3x3x192的卷积核进行卷积,padding=1,stride=1,根据公式:(input_size + 2 * padding - kernel_size) / stride + 1=(13+2*1-3)/1+1=13,得到每组FeatureMap输出是13x13x128。(用单个组的说)

ReLU:将卷积层输出的FeatureMap输入到ReLU函数中。

池化 :使用3x3,stride=2的池化单元进行最大池化操作(max pooling)。注意这里使用的是重叠池化,即stride小于池化单元的边长。根据公式:(13+2*0-3)/2+1=6,每组得到的输出为6x6x128。

(都在描述单个组,蒽,清清楚楚了)

(然后这边,pool_size=3,stride=2 池化之后的窗口 减半)

第六层 FC6

该层的流程为:(卷积)全连接 -->ReLU -->Dropout (卷积)

全连接 :输入为6×6×256(这里的输入是因为C5→FC6 两个GPU交互了 所以把第三维合并作为输入),使用4096个6×6×256的卷积核(注意这里的卷积核大小与输入图像完全相同 所以1个卷积核输出1个值)进行卷积,由于卷积核尺寸与输入的尺寸完全相同,即卷积核中的每个系数只与输入尺寸的一个像素值相乘一一对应,根据公式:(input_size + 2 * padding - kernel_size) / stride + 1=(6+2*0-6)/1+1=1,得到输出是1x1x4096++既有4096个神经元,该层被称为全连接层(6!)++

ReLU:这4096个神经元的运算结果通过ReLU激活函数中。

Dropout :随机的断开全连接层某些神经元的连接,通过不激活某些神经元的方式防止过拟合。4096个神经元也被均分到两块GPU上进行运算。

第七层 FC7

该层的流程为:(卷积)全连接 -->ReLU -->Dropout

全连接:输入为4096个神经元,输出也是4096个神经元(作者设定的)。

ReLU:这4096个神经元的运算结果通过ReLU激活函数中。

Dropout:随机的断开全连接层某些神经元的连接,通过不激活某些神经元的方式防止过拟合。

4096个神经元也被均分到两块GPU上进行运算。

(这些层的流程设计 还真是需要扒论文 谢谢这个博主)

第八层 输出层

该层的流程为:(卷积)全连接 -->Softmax

全连接:输入为4096个神经元,输出是1000个神经元。这1000个神经元即对应1000个检测类别。

Softmax:这1000个神经元的运算结果通过Softmax函数中,输出1000个类别对应的预测概率值。

FLOPS 不看 (看不懂

是谁、在哪儿、啥时候

AlexNet是由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton在2012年ImageNet图像分类竞赛中提出的一种经典的卷积神经网络。

AlexNet的作者是多伦多大学的Alex Krizhevsky等人。Alex Krizhevsky是Hinton的学生。网上流行说 Hinton、LeCun和Bengio是神经网络领域三巨头,LeCun就是LeNet5的作者(Yann LeCun)。

鉴于当时的硬件资源限制,由于AlexNet结构复杂、参数很庞大,难以在单个GPU上进行训练。因此AlexNet采用两路GTX 580 3GB GPU并行训练。也就是说把原先的卷积层平分成两部分FeatureMap分别在两块GPU上进行训练(例如卷积层55x55x96分成两个FeatureMap:55x55x48)

创新点:

  1. 激活函数ReLU
  2. 局部响应归一化
  3. Dropout
  4. 重叠池化
  5. 双GPU
  6. 端到端的训练

©手撕 CNN 经典网络之 AlexNet(理论篇) - 知乎 (zhihu.com)

原文:

ImageNet Classification with Deep Convolutional Neural Networks (neurips.cc)

相关推荐
深度学习lover5 分钟前
<项目代码>YOLOv8 番茄识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·番茄识别
IT古董6 分钟前
【机器学习】机器学习中用到的高等数学知识-1.线性代数 (Linear Algebra)
人工智能·python·线性代数·机器学习
飞腾开发者14 分钟前
飞腾平台Arm NN软件栈安装使用指南
linux·运维·人工智能·机器学习·计算机视觉
Watermelo61741 分钟前
通过MongoDB Atlas 实现语义搜索与 RAG——迈向AI的搜索机制
人工智能·深度学习·神经网络·mongodb·机器学习·自然语言处理·数据挖掘
AI算法-图哥1 小时前
pytorch量化训练
人工智能·pytorch·深度学习·文生图·模型压缩·量化
大山同学1 小时前
DPGO:异步和并行分布式位姿图优化 2020 RA-L best paper
人工智能·分布式·语言模型·去中心化·slam·感知定位
机器学习之心1 小时前
时序预测 | 改进图卷积+informer时间序列预测,pytorch架构
人工智能·pytorch·python·时间序列预测·informer·改进图卷积
天飓1 小时前
基于OpenCV的自制Python访客识别程序
人工智能·python·opencv
檀越剑指大厂1 小时前
开源AI大模型工作流神器Flowise本地部署与远程访问
人工智能·开源
声网1 小时前
「人眼视觉不再是视频消费的唯一形式」丨智能编解码和 AI 视频生成专场回顾@RTE2024
人工智能·音视频