当前位置:首页 > 编程笔记 > 正文
已解决

模型实际训练笔记1—AlexNet

来自网友在路上 174874提问 提问时间:2023-11-04 16:01:59阅读次数: 74

最佳答案 问答题库748位专家为你答疑解惑

1、AlexNet网络模型介绍:

AlexNet 是一种深度卷积神经网络,由Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 在2012年开发。它是深度学习领域的重要里程碑,因为它在当年的 ImageNet 大规模图像分类竞赛(ILSVRC)上取得了显著的胜利,大大降低了图像分类错误率,标志着深度卷积神经网络的复兴。

以下是关于 AlexNet 的一些关键特点:

  1. 深度网络:相对于以前的神经网络,AlexNet 是一个相对较深的卷积神经网络,有8层卷积和全连接层。这种深度有助于网络更好地学习到图像中的特征。

  2. 卷积层和池化层:AlexNet 采用了交替的卷积层和池化层。这些卷积层用于检测图像中的特征,如边缘、纹理和形状,而池化层用于减小特征图的空间分辨率。

  3. ReLU 激活函数:与传统的激活函数(如 Sigmoid 和 Tanh)不同,AlexNet 引入了修正线性单元(ReLU)作为激活函数。这有助于加速网络的训练,因为它减少了梯度消失问题。

  4. 局部响应归一化(LRN):AlexNet 在卷积层之间引入了局部响应归一化层,以增强网络的泛化性能。

  5. Dropout:为了减少过拟合,AlexNet 引入了 Dropout 层,随机地在训练过程中关闭一部分神经元。

  6. 多GPU训练:AlexNet 是早期采用多GPU进行训练的神经网络之一,这种并行训练方法有助于加速训练过程。

  7. 大规模数据集:AlexNet 的成功也得益于大规模的 ImageNet 数据集,这个数据集包括数百万张标记图像,涵盖了1000个不同的类别。

  8. ImageNet 竞赛胜利:AlexNet 在2012年 ImageNet 竞赛上一举夺魁,将图像分类错误率大幅降低,标志着深度学习的崭露头角。

AlexNet 的成功对深度学习产生了深远的影响,激发了更多对深度卷积神经网络的研究和应用。它表明深度神经网络在计算机视觉任务中的潜力,并开启了深度学习在图像分类、目标检测和其他视觉任务中的广泛应用。

2、AlexNet取得成功的原因

AlexNet 网络之所以取得成功,有以下关键原因:

  1. 深度网络结构:AlexNet 是相对较深的神经网络,拥有8层卷积和全连接层。这种深度有助于网络更好地学习到图像中的高级特征和抽象表示。

  2. ReLU 激活函数:AlexNet 引入了修正线性单元(ReLU)作为激活函数,相较于传统的 Sigmoid 函数,ReLU 更容易训练,减轻了梯度消失问题,使网络更快地收敛。

  3. 大规模数据集:AlexNet 的成功得益于大规模的 ImageNet 数据集,该数据集包含数百万张标记图像,具有丰富的多样性和复杂性,有助于网络更好地泛化到新的图像。

  4. 多GPU训练:AlexNet 是早期采用多GPU训练的神经网络之一。通过并行处理,可以加速网络的训练速度,使得更深层次的网络训练成为可能。

  5. 局部响应归一化(LRN):AlexNet 引入了局部响应归一化层,有助于提高网络的泛化性能,特别是在竞赛数据集上。

  6. Dropout:为了减少过拟合,AlexNet 引入了 Dropout 层,通过随机关闭一部分神经元,增加了网络的鲁棒性。

  7. ImageNet 竞赛胜利:AlexNet 在2012年 ImageNet 竞赛中取得了显著胜利,将图像分类错误率大幅降低,表明深度卷积神经网络在大规模图像分类任务上的卓越性能。

  8. 研究团队的贡献:AlexNet 的成功也归功于团队的卓越工作,包括网络结构的设计、训练策略的选择和超参数的调整。

AlexNet 的成功标志着深度学习的复兴,激发了对卷积神经网络和深度学习的广泛研究和应用。它为计算机视觉领域和其他领域的深度学习研究奠定了坚实的基础。

2、网络结构图:

      AlexNet由8层组成:5个卷积层、2个全连接隐藏层和1个全连接输出层.

       在AlexNet的第一层,卷积窗口的形状是11×11。 由于ImageNet中大多数图像的宽和高比MNIST图像的多10倍以上,因此,需要一个更大的卷积窗口来捕获目标。 第二层中的卷积窗口形状被缩减为5×5,然后是3×3。 此外,在第一层、第二层和第五层卷积层之后,加入窗口形状为3×3、步幅为2的最大汇聚层。 而且,AlexNet的卷积通道数目是LeNet的10倍。

        在最后一个卷积层后有两个全连接层,分别有4096个输出。 这两个巨大的全连接层拥有将近1GB的模型参数。 由于早期GPU显存有限,原版的AlexNet采用了双数据流设计,使得每个GPU只负责存储和计算模型的一半参数。 幸运的是,现在GPU显存相对充裕,所以现在很少需要跨GPU分解模型(因此,本书的AlexNet模型在这方面与原始论文稍有不同)。

图  从LeNet(左)到AlexNet(右)

3、使用的数据集:

这里使用的是Fashion-MNIST数据集,训练AlexNet。 原文中AlexNet是在ImageNet上进行训练的,数据集比较大,因为即使在现代GPU上,训练ImageNet模型,同时使其收敛可能需要数小时或数天的时间。而这里训练下来,使用RTX4090,收敛大约在10-20分钟之间。

4、代码:

基于PyTorch架构的。自己实际运行过的,没有问题。需要安装d2l库。参考动手深度学习一书。

import torch
from torch import nn
from d2l import torch as d2lnet = nn.Sequential(# 这里使用一个11*11的更大窗口来捕捉对象。# 同时,步幅为4,以减少输出的高度和宽度。# 另外,输出通道的数目远大于LeNetnn.Conv2d(1, 96, kernel_size=11, stride=4, padding=1), nn.ReLU(),nn.MaxPool2d(kernel_size=3, stride=2),# 减小卷积窗口,使用填充为2来使得输入与输出的高和宽一致,且增大输出通道数nn.Conv2d(96, 256, kernel_size=5, padding=2), nn.ReLU(),nn.MaxPool2d(kernel_size=3, stride=2),# 使用三个连续的卷积层和较小的卷积窗口。# 除了最后的卷积层,输出通道的数量进一步增加。# 在前两个卷积层之后,汇聚层不用于减少输入的高度和宽度nn.Conv2d(256, 384, kernel_size=3, padding=1), nn.ReLU(),nn.Conv2d(384, 384, kernel_size=3, padding=1), nn.ReLU(),nn.Conv2d(384, 256, kernel_size=3, padding=1), nn.ReLU(),nn.MaxPool2d(kernel_size=3, stride=2),nn.Flatten(),# 这里,全连接层的输出数量是LeNet中的好几倍。使用dropout层来减轻过拟合nn.Linear(6400, 4096), nn.ReLU(),nn.Dropout(p=0.5),nn.Linear(4096, 4096), nn.ReLU(),nn.Dropout(p=0.5),# 最后是输出层。由于这里使用Fashion-MNIST,所以用类别数为10,而非论文中的1000nn.Linear(4096, 10))X = torch.randn(1, 1, 224, 224)
for layer in net:X=layer(X)print(layer.__class__.__name__,'output shape:\t',X.shape)batch_size = 128
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)lr, num_epochs = 0.01, 10
d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())d2l.plt.show()

5、运行结果显示

loss 0.333, train acc 0.881, test acc 0.883
5397.5 examples/sec on cuda:0

5、小结

  • AlexNet的架构与LeNet相似,但使用了更多的卷积层和更多的参数来拟合大规模的ImageNet数据集。

  • 今天,AlexNet已经被更有效的架构所超越,但它是从浅层网络到深层网络的关键一步。

  • 尽管AlexNet的代码只比LeNet多出几行,但学术界花了很多年才接受深度学习这一概念,并应用其出色的实验结果。这也是由于缺乏有效的计算工具。

  • Dropout、ReLU和预处理是提升计算机视觉任务性能的其他关键步骤。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"模型实际训练笔记1—AlexNet":http://eshow365.cn/6-31939-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!