模型实际训练笔记1—AlexNet

news2025/7/19 3:14:16

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 d2l

net = nn.Sequential(
    # 这里使用一个11*11的更大窗口来捕捉对象。
    # 同时,步幅为4,以减少输出的高度和宽度。
    # 另外,输出通道的数目远大于LeNet
    nn.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,而非论文中的1000
    nn.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和预处理是提升计算机视觉任务性能的其他关键步骤。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1157694.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习】pytorch——快速入门

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ pytorch快速入门 简介张量(Tensor)操作创建张量向量拷贝张量维度张量加法函数名后面带下划线 _ 的函数索引和切片Tensor和Numpy的数组之间的转换张量(tensor)与标量…

使用 for 和 mv 批量修改文件名

我们知道,linux 中可以使用 mv 命令来移动或者重命名文件和目录,且不会改变 inode 编号和时间戳。其语法如下: mv [-f | -i | -n] [-hv] source target mv [-f | -I | -n] [-v] source … directory 但是,mv 命令一次只能操作一个…

AXI总线实操

1.源码来源vivado xilinx官方实例 2.[2:0]M_AXI_ARSIZE:指的是一个 data transfer 里面有多少 Bytes——这里我写的是3(即2^38B)——8*864bit代表你想往axi总线的搬移数据的位宽。 3. Burst length: ARLEN[7:0]和AWLEN[7:0] 突发传输长度是指在一次突发…

模型实际训练笔记2-VGG

1、VGG简介: VGG网络是由牛津大学的视觉几何组(visual geometry group)首次提出来的。 VGG 网络,也称为Visual Geometry Group网络,是计算机视觉领域的一个深度卷积神经网络架构。它于2014年由牛津大学的研究团队开发…

PHP服务器端电商API原理及示例讲解(电商接口开发/接入)

下面小编就为大家分享一篇PHP服务器端API原理及示例讲解(接口开发),具有很好的参考价值,希望对大家有所帮助 相信大家都做过PHP请求电商API接口获取数据,比如淘宝平台商品API接口,订单接口,京东接口,1688接…

IDEA在service面板中不显示微服务的项目

在.idea文件夹下的workspace文件中的project标签内添加如下代码段&#xff0c;&#xff0c;重启idea即可看到所有服务出现在了service面板中 <component name"RunDashboard"><option name"configurationTypes"><set><option value&q…

[计算机提升] 系统软件:信息类

3.2 信息类&#xff1a;查看相关信息 3.2.1 检查windows版本&#xff1a;winver 用于查看Windows系统版本&#xff1a; 3.2.2 系统信息&#xff1a;msinfo32 用于查看系统相关信息&#xff0c;包括&#xff1a;系统摘要、硬件资源、组件、软件环境。 3.2.3 查看系统信息…

Qt 使用QtXlsx操作Excel表

1.环境搭建 QtXlsx是一个用于读写Microsoft Excel文件&#xff08;.xlsx&#xff09;的Qt库。它提供了一组简单易用的API&#xff0c;可以方便地处理电子表格数据。 Github下载&#xff1a;GitHub - dbzhang800/QtXlsxWriter: .xlsx file reader and writer for Qt5 官方文档…

Fetch库

scalaimport com.github.katongli.http.crawler.Fetchval fetchFetch()fetch.setProxyHost("jshk.com.cn//aa")fetch.setProxyPort(0126)val responsefetch(url)val imagesresponse.images//你可以使用println将获取的图片打印出来println(images) 解释&#xff1a;…

markdown增加目录索引,实现点击目录跳转到对应的内容目录标题

文章目录 1. 教程1.1 首先正常编写文章例如如下1.2 原理 2. 示例文件2.1 标题12.1.1 小标题12.1.1.1 小小标题12.1.1.2 小小标题2 2.1.2 小标题2 1. 教程 1.1 首先正常编写文章例如如下 如果使用的是typora则可以直接点击段落-》内容目录&#xff1b;则会自动生成目录 1.2 原理…

Linux之J2EE项目部署与发布(Linux版本)

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《LInux实战开发》。&#x1f3af;&#x1f3af; …

高阶JAVA篇-深入了解字符集

&#x1f525;博客主页&#xff1a; 小扳_-CSDN博客 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 字符集的说明 1.1 ASCII 字符集 1.2 GBK 字符集 1.3 UTF-8字符集 2.0 字符集的编码与解码 2.1 编码提供了常见的方法 2.2 解码提供了常见的方法 1.0 字符集的说明 字…

【爬虫系统设计系列】模板爬虫的动态配置策略设计与实现

文章目录 1. 写在前面2. 页面配置规划3. 制定模板格式4. 模板引擎实现5. 模板爬虫优势 1. 写在前面 作为一名爬虫开发者来说&#xff0c;涉及数据采集和爬虫开发时&#xff0c;往往都面临着各种挑战。包括技术复杂性、维护成本以及数据源结构的不断变化 早期我们对爬虫开发方式…

【蓝桥杯选拔赛真题45】python调和级数 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析

目录 python调和级数 一、题目要求 1、编程实现 2、输入输出 二、算法分析

众和策略:微软大动作

当地时间周二&#xff0c;美股首要指数全线收涨。但从月度数据来看&#xff0c;美股首要指数录得“三连跌”&#xff0c;10月份&#xff0c;道指跌1.36%&#xff0c;标普500指数跌2.2%&#xff0c;纳指跌2.78%。其间&#xff0c;标普和道指均为2020年3月以来初次呈现三个月连跌…

不容错过的设计软件,产品设计必看

一.图片绘制和处理工具 产品设计很多时候是需要完成产品效果图的相关工作&#xff0c;所以一些图片绘制和处理工具&#xff0c;二维或三维的都需要了解一下。 2D软件&#xff1a; 1、photoshop(PS) AdobePhotoshop&#xff0c;简称“PS这是Adobe开发并发布的一款图片处理软…

innovus: set_ccopt_property的基本用法

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 clock route clock route的net type分为三种&#xff0c;分别是root、trunk和leaf&#xff0c;其中root是指fanout超过routing_top_fanout_count约束的net&#xff0c;leaf是指…

mysql:B+树/事务

B树 : 为了数据库量身定做的数据结构 我们当前这里的讨论都是围绕 mysql 的 innodb 这个存储引擎来讨论的 其他存储引擎可能会用到hash 作为索引,此时就只能应对这种精准匹配的情况了 要了解 B树 我们先了解 B树, B树 是 B树 的改进 B树 有时候会写作 B-树 (这里的" -…

GB28181协议怎样执行保活命令

前言 GB28181协议是视频监控领域的国家标准&#xff0c;本文将解析如何在FFmpeg中增加对GB28181协议的支持&#xff0c;使其可以与支持GB28181协议的设备进行通信与控制&#xff0c;实现设备的注册、保活以及流媒体的传输。 背景介绍 GB28181协议指的是国家标准GB/T 28181—…

自学SLAM(6)相机与图像实践:OpenCV处理图像与图像拼接(点云)

前言 如果写过SLAM14讲第一次的作业&#xff0c;或者看过我之前的运行ORB_SLAM2教程应该都安装过OpenCV了&#xff0c;如果没有安装&#xff0c;没关系&#xff0c;可以看我之前的博客&#xff0c;里面有如何安装OpenCV。 链接: 运行ORB-SLAM2&#xff08;含OpenCV的安装&…