深度卷积神经网络(AlexNet)

目录

1.基础简介

1.1基础介绍

1.2基础架构 

2.Alexnet与LeNet的对比

3.参考代码

4.李沐老师给出的例子


1.基础简介

1.1基础介绍

2012年,AlexNet横空出世。它首次证明了学习到的特征可以超越手工设计的特征。它一举打破了计算机视觉研究的现状。 AlexNet使用了8层卷积神经网络,并以很大的优势赢得了2012年ImageNet图像识别挑战赛。

AlexNet并不是第一个赢得图像识别竞赛的GPU实现的高速卷积神经网络。 K. Chellapilla et al. (2006)在GPU上的卷积神经网络比CPU上的等效实现快四倍,Dan Cireřan等人(4)在IDSIA的深度卷积神经网络已经快了2011倍,并在5年2011月取得了超人的性能。 在6年2011月5日至15年2012月9日期间,他们的卷积神经网络赢得了四次以上的图像竞赛。 它还显著更新了文献中多个图像数据库的最高性能。

根据AlexNet的一篇论文Cireřan的早期网络“有些相似”。 两者都最初是用 CUDA 编写的,可以在 GPU 上运行。 事实上,两者都是Yann Lucan等人(1989)发表的卷积神经网络设计的变体,而福岛邦彦(称为neocognitron)则认为。 这种结构后来被J. Weng的技术修改,称为最大池化。

2015年,AlexNet赢得了亚洲研究院Microsoft 2015多层的超深度卷积神经网络,赢得了ImageNet 100竞赛。

1.2基础架构 

  • 第一层:11x11的96通道卷积,步长为4,后接ReLU激活函数和局部响应归一化(LRN),再接3x3的最大池化,步长为2。
  • 第二层:5x5的256通道卷积,步长为1,后接ReLU激活函数和LRN,再接3x3的最大池化,步长为2。
  • 第三层:3x3的384通道卷积,步长为1,后接ReLU激活函数。
  • 第四层:3x3的384通道卷积,步长为1,后接ReLU激活函数。
  • 第五层:3x3的256通道卷积,步长为1,后接ReLU激活函数和3x3的最大池化,步长为2。
  • 第六层:4096个神经元的全连接层,后接ReLU激活函数和Dropout。
  • 第七层:4096个神经元的全连接层,后接ReLU激活函数和Dropout。
  • 第八层:1000个神经元的全连接层,输出类别预测。

AlexNet使用了两个GPU来并行训练网络,并在第三、第四、第五层中使用跨GPU的连接来增加模型容量。AlexNet在ImageNet数据集上达到了15.3%的top-5错误率,比第二名低了10.8个百分点。AlexNet是计算机视觉领域最具影响力的论文之一,它证明了深度学习在图像识别任务上的优越性,并促进了更多基于CNN和GPU的研究。

2.Alexnet与LeNet的对比

首先对比两者的架构图,具有明显的进步,Alexnet具有更大更深的网络:

AlexNet和LeNet的异同如下:

  • 相同点:都是基于卷积神经网络的图像分类模型,都使用了卷积层、池化层和全连接层的组合来提取图像特征。
  • 不同点
    • AlexNet比LeNet更深更宽,有更多的参数和计算量。
    • AlexNet使用了ReLU激活函数,而LeNet使用了sigmoid激活函数。
    • AlexNet使用了Dropout来抑制过拟合,而LeNet没有。
    • AlexNet使用了数据增广来扩充训练集,而LeNet没有。
    • AlexNet使用了不同大小的卷积核(11x11, 5x5, 3x3),而LeNet只使用了5x5的卷积核。
    • AlexNet使用了最大池化,而LeNet使用了平均池化

3.参考代码

如果你想写一个AlexNet的代码,你可以参考以下的资源:

  • AlexNet Explained | Papers With Code 这个网站提供了AlexNet的详细介绍和代码实现,以及在不同的数据集和任务上的结果和排名。
  • AlexNet | Papers With Code 这个网站提供了AlexNet的PyTorch实现,以及训练和评估的方法和参数。
  • AlexNet convolutional neural network - MATLAB alexnet 这个网站提供了AlexNet的MATLAB实现,以及加载预训练模型和生成代码的方法。

4.李沐老师给出的例子

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)

将AlexNet直接应用于Fashion-MNIST的一个问题是,Fashion-MNIST图像的分辨率(28×28像素)低于ImageNet图像。 为了解决这个问题,我们将它们增加到224×224(通常来讲这不是一个明智的做法,但在这里这样做是为了有效使用AlexNet架构)。 这里需要使用d2l.load_data_fashion_mnist函数中的resize参数执行此调整。 

 读取数据集:

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())

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能测试讲解超详细Jmeter

目录 什么是性能 性能测试的目的 功能测试和性能测试 基准测试 负载测试 稳定性测试 压力测试 并发测试 总结 性能测试指标 响应时间 并发数 吞吐量 点击数 错误率 资源使用率 总结 性能测试流程 性能测试需求分析 性能测试计划和方案 ​编辑性能测试用例​编辑 性…

6应用层-6.2【实验】【计算机网络】

6应用层-6.2【实验】【计算机网络】 前言推荐6应用层知识一、DNS常用记录类型:二、nslookup命令的用法 6.1 Web服务与FTP服务配置6.2 DNS域名系统配置实验目的实验内容及实验环境实验原理实验过程1.搭建如图所示的网络拓扑2.测试网络连通性3.在服务器上启用DNS服务&…

消息模块的数据模型设计

目录 一、创建POJO映射类 1. message集合 2. message_ref集合 二、MongoDB的联合查询 MessageRef:保存消息接收人相关信息,接收人ID、消息已读未读、消息是否最新接收。 在 MongoDB 里面我们不需要预先去创建集合,只要我们往 MongoDB 里…

大模型基础之注意力机制和Transformer

【注意力机制】 核心思想:在decoder的每一步,把encoder端所有的向量提供给decoder,这样decoder根据当前自身状态,来自动选择需要使用的向量和信息. 【注意力带来的可解释性】 decoder在每次生成时可以关注到encoder端所有位置的…

Kicad编译

Windows 1.安装visual studio Pro 2019 以上版本,建议2022,自行破解,安装时一定要勾选上cmake工具;安装Git bash 2.去Gitlab上fork kicad的master分支到自己的gitlab仓库上,在本地创建kicad-source路径,初…

B站 Java相关学习资源汇总

一、计算机网络 计算机网络微课堂 https://www.bilibili.com/video/BV1c4411d7jb?p1 讲师:湖科大教书匠 评价:通俗易懂,重点知识十分细致,配合实验,而且有考研408 的难题的讲解,也是非常适合考研党&#…

【线程池】ScheduledExecutorService接口和ScheduledThreadPoolExecutor定时任务线程池使用详解

目录 〇、简介 0.1 ScheduledExecutorService 和 Timer 的区别 一、什么是ScheduledExecutorService? 二、ScheduledThreadPoolExecutor中的方法 2.1 构造方法 2.2 schedule方法 2.3 scheduleAtFixedRate方法 2.4 scheduleWithFixedDelay方法 2.5 setConti…

【Java】直接return 会触发try-catch 里面的finally的方法么

🐱‍🚀/背景 try-catch 主要的作用是捕获异常,那么程序没有异常,finally里面代码能否执行? 特别是如果我们前面进行了加锁等操作,没有释放锁,那不是会造成业务逻辑问题, 先说结论:…

oracle只读打开数据库

客户经常有这样的需求,数据库已迁移,但还是希望原库可以打开,就只能只读模式打开了 方法一 SYSorcl> STARTUP OPEN READ ONLY; ORACLE instance started. Total System Global Area 4.0086E10 bytes Fixed Size 22549…

大体积mbtiles影像地图文件用什么软件浏览?

mbtiles格式简称mbt,是一种影像地图文件。PC端和手机端都有软件可以加载留着mbt格式的影像地图。 电脑桌面端 电脑端上的软件可以使用“图新地球”,直接把mbt文件拖到地图上即可,非常简便。 手机端 可以从华为应用商店下载“外业精灵”app…

【Linux】 -- TCP协议 (一)

TCP协议 Tcp协议可靠性冯诺依曼体系结构 TCP的协议格式序号与确认序号窗口大小六个标志位 确认应答机制 (ACK)超时重传机制连接管理机制 Tcp协议 TCP全称为 “传输控制协议”(Transmission Control Protocol) TCP协议被广泛应用…

基于深度学习的高精度动物园动物检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度动物园动物(水牛、斑马、大象、水豚、海龟、猫、奶牛、鹿、狗、火烈鸟、长颈鹿、捷豹、袋鼠、狮子、鹦鹉、企鹅、犀牛、羊、老虎)检测识别系统可用于日常生活中或野外来检测与定位动物园动物,利用深度学…