卷积神经网络典型应用———AlexNet

本文深入剖析了AlexNet卷积神经网络的结构与原理,包括其在2012年ImageNet竞赛中的卓越表现、网络结构特点及关键组件如ReLU激活函数和Dropout正则化等。此外还介绍了AlexNet的多GPU训练策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 AlexNet简介

AlexNet卷积神经网络在计算机视觉领域中受到欢迎,它由Alex Krizhevsky,Ilya Sutskever和Geoff Hinton实现。AlexNet在2012年的ImageNet ILSVRC 竞赛中夺冠,性能远远超出第二名(16%的top5错误率,第二名是26%的top5错误率)。这个网络的结构和LeNet非常类似,但是更深更大,并且使用了层叠的卷积层来获取特征(之前通常是只用一个卷积层并且在其后马上跟着一个汇聚层)。

二 AlexNet结构

这个神经网络有6000万参数和650000个神经元,包含5个卷积层(某些卷积层后面带有池化层)和3个全连接层,最后是一个1000维的softmax。
在这里插入图片描述在这里插入图片描述

关键:采用dropout的正则化方法来减少全连接层过拟合

三 Alex结构详尽分析

COV1!!!
输入:

输入Input的图像规格: 224X224X3(RGB图像),实际上会经过预处理变为227X227X3

卷积:

使用的96个大小规格为11X11X3的过滤器filter,或者称为卷积核(步长为4),进行特征提取,卷积后的数据:
55X55X96 [(227-11)/4+1=55]
此处计算方法为:
(227-11+2*pedding)/4+1=55(此处没有pedding)
即为(image_x-filter_x+2xpedding)/stride+1
96为深度,即96层特征提取

激活函数

使用relu作为激励函数,来确保特征图的值范围在合理范围之内。

float relu(float x)
{
   if(x<0):
retuern 0 ;
else:
return x;
}

relu1后的数据:55X55X96

降采样操作pool1(池化操作)

pool1的核:3X3 步长:2,降采样之后的数据为27X27X96 [(55-3)/2+1=27]
计算方法:
(origin_x-pool_x)/stride+1
[注意:Alexnet中采用的是最大池化,是为了避免平均池化的模糊化效果,从而保留最显著的特征,并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性,减少了信息的丢失。]

COV2!!!
输入:

输入27x27x96

卷积:

用256个5X5大小的过滤器filter(步长1)对27X27X96个特征图,进行进一步提取特征,但是处理的方式和conv1不同,过滤器是对96个特征图中的某几个特征图中相应的区域乘以相应的权重,然后加上偏置之后所得到区域进行卷积。经过这样卷积之后,然后在在加上宽度高度两边都填充2像素,会的到一个新的256个特征图.特征图的大小为:
(27+2X2 - 5)/1 +1 = 27 ,也就是会有256个27X27大小的特征图.

激活函数

激活之后为27x27x96

降采样操作pool2(池化操作)

pool1的核:3X3 步长:2,pool2(池化层)降采样之后的数据为13X13X96 [(27-3)/2+1=13]

COV3!!!

没有降采样层
得到(13+2X1 -3)/1 +1 = 13 , 384个13X13的新特征图(核3X3,步长为1)

COV4!!!

没有降采样层
得到(13+2X1 -3)/1 +1 = 13 , 384个13X13的新特征图(核3X3,步长为1)

COV5!!!

输出数据为13X13X256的特征图
降采样操作pool3
pool3的核:3X3 步长:2,pool3(池化层)降采样之后的数据为6X6X256
因为(13-3)/2+1=6

FC6!!!

全连接层,这里使用4096个神经元,对256个大小为6X6特征图,进行一个全连接,也就是将6X6大小的特征图,进行卷积变为一个特征点,然后对于4096个神经元中的一个点,是由256个特征图中某些个特征图卷积之后得到的特征点乘以相应的权重之后,再加上一个偏置得到,之后再进行一个dropout,也就是随机从4096个节点中丢掉一些节点信息(值清0),然后就得到新的4096个神经元。
注:(dropout的使用可以减少过度拟合,丢弃并不影响正向和反向传播。)
注:在经过交叉验证,隐含节点dropout率等于0.5的时候效果最好,原因是0.5的时候dropout随机生成的网络结构最多。

FC7!!!

和FC6类似

FC8!!!

采用的是1000个神经元,然后对fc7中4096个神经元进行全链接,然后会通过高斯过滤器,得到1000个float型的值,也就是我们所看到的预测的可能性。
过程详细可参考:
神经网络模型之AlexNet的一些总结.

四 why relu???

这是一个老生常谈的问题了。。。原因归结如下俩个:
1.sigmoid与tanh有饱和区,R

### 典型的 CNN 卷积神经网络结构 卷积神经网络(CNN)是一种特殊的前馈神经网络,其设计灵感来源于生物视觉系统的感受野机制[^2]。这类网络特别适用于处理具有网格状拓扑结构的数据集,比如时间序列中的单维度信号或者图片中的二维像素矩阵。 #### 层级组成 一个标准的CNN通常由以下几个部分构成: - **输入层**:接收原始数据作为模型训练的基础材料; - **卷积层 (Convolution Layer)**:通过一系列滤波器执行局部加权求和操作来提取特征;这些滤波器会在整个输入空间滑动并生成所谓的激活映射或特征图。此过程有助于捕捉不同尺度下的模式信息[^1]。 - **池化层 (Pooling Layer)**:用于降低特征表示的空间尺寸,减少参数数量的同时保持重要特性不变。常见的做法是对相邻区域取最大值(Max Pooling) 或者平均值(Average Pooling)[^4]。 - **全连接层 (Fully Connected Layers)**:位于最后阶段,在这里所有的节点都相互关联起来以完成分类或其他任务目标预测工作。经过前面多轮变换后的抽象级别较高的表达被送入此类层次进一步加工成最终输出形式[^3]。 ```python import torch.nn as nn class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self).__init__() # 定义卷积层 self.conv_layer = nn.Sequential( nn.Conv2d(in_channels=1, out_channels=16, kernel_size=3), nn.ReLU(), nn.MaxPool2d(kernel_size=2) ) # 定义全连接层 self.fc_layer = nn.Linear(16 * 13 * 13, num_classes) def forward(self, x): x = self.conv_layer(x) x = x.view(-1, 16 * 13 * 13) x = self.fc_layer(x) return x ``` ### 应用实例 CNN 已经成为计算机视觉领域不可或缺的一部分,并广泛应用于各种实际场景之中: - 对于**图像识别**而言,无论是物体检测还是风格迁移等复杂任务都可以借助该技术实现高效解决方案。例如,AlexNet、VGG 和 ResNet 都是基于 CNN 架构构建而成的经典案例。 - 在自然语言处理方面也有着不俗表现——尽管文本本质上属于线性序列而非传统意义上的“图像”,但当我们将单词嵌入转换为向量后再排列组合时便形成了适合 CNN 处理的形式。因此它同样能够胜任诸如情感分析之类的 NLP 课题研究。 - 此外,在医疗影像诊断中也发挥重要作用,如利用三维 CNN 进行脑部 MRI 扫描结果解析等工作均取得了良好成效。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值