深度学习——深度卷积神经网络(AlexNet)
深度学习——深度卷积神经网络(AlexNet)
文章目录
- 前言
- 一、学习表征
- 二、AlexNet实现
- 2.1. 模型设计
- 2.2. 激活函数
- 2.3. 容量控制与预处理
- 2.4. 训练模型
- 总结
前言
在前面学习了卷积神经网络的基本原理,之后将继续学习现代卷积神经网络架构。而本章将学习其中的AlexNet模型。
参考书:
《动手学深度学习》
一、学习表征
在2012年前,图像特征都是机械地计算出来的。事实上,设计一套新的特征函数、改进结果,并撰写论文是盛极一时的潮流。SIFT 、SURF、HOG(定向梯度直方图)、bags of visual words和类似的特征提取方法占据了主导地位。
有一组研究人员,想法则与众不同:他们认为特征本身应该被学习。此外,他们还认为,在合理地复杂性前提下,特征应该由多个共同学习的神经网络层组成,每个层都有可学习的参数。在机器视觉中,最底层可能检测边缘、颜色和纹理。
事实上,Alex Krizhevsky、Ilya Sutskever和Geoff Hinton提出了一种新的卷积神经网络变体AlexNet。在2012年ImageNet挑战赛中取得了轰动一时的成绩。
AlexNet的更高层建立在这些底层表示的基础上,以表示更大的特征,如眼睛、鼻子、草叶等等。而更高的层可以检测整个物体,如人、飞机、狗或飞盘。最终的隐藏神经元(位于全连接层)可以学习图像的综合表示,从而使属于不同类别的数据易于区分。
二、AlexNet实现
AlexNet和LeNet的架构非常相似,AlexNet使用了8层卷积神经网络,并以很大的优势赢得了2012年ImageNet图像识别挑战赛。
AlexNet和LeNet的设计理念非常相似,但也存在显著差异:
-
AlexNet比相对较小的LeNet5要深得多。AlexNet由八层组成:五个卷积层、两个全连接隐藏层和一个全连接输出层。
-
AlexNet使用ReLU而不是sigmoid作为其激活函数。
2.1. 模型设计
在AlexNet的第一层,卷积窗口的形状是 11 × 11 11\times11 11×11。
由于ImageNet中大多数图像的宽和高比MNIST图像的多10倍以上,因此,需要一个更大的卷积窗口来捕获目标。
第二层中的卷积窗口形状被缩减为 5 × 5 5\times5 5×5,然后是 3 × 3 3\times3 3×3。
此外,在第一层、第二层和第五层卷积层之后,加入窗口形状为 3 × 3 3\times3 3×3、步幅为2的最大汇聚层。
而且,AlexNet的卷积通道数目是LeNet的10倍。
在最后一个卷积层后有两个全连接层,分别有4096个输出。
这两个巨大的全连接层拥有将近1GB的模型参数。
由于早期GPU显存有限,原版的AlexNet采用了双数据流设计,使得每个GPU只负责存储和计算模型的一半参数。
2.2. 激活函数
AlexNet将sigmoid激活函数改为更简单的ReLU激活函数。
- 一方面,ReLU激活函数的计算更简单,它不需要如sigmoid激活函数那般复杂的求幂运算。
- 另一方面,当使用不同的参数初始化方法时,ReLU激活函数使训练模型更加容易。
当sigmoid激活函数的输出非常接近于0或1时,这些区域的梯度几乎为0,因此反向传播无法继续更新一些模型参数。
相反,ReLU激活函数在正区间的梯度总是1。
2.3. 容量控制与预处理
AlexNet通过暂退法控制全连接层的模型复杂度,而LeNet只使用了权重衰减。
为了进一步扩充数据,AlexNet在训练时增加了大量的图像增强数据,如翻转、裁切和变色。这使得模型更健壮,更大的样本量有效地减少了过拟合。
代码生成模型架构:
import torch
from torch import nn
from d2l import torch as d2lnet = nn.Sequential(#开始使用一个11×11的卷积窗口来捕获对象,同时步幅为4,以减少输出的宽度和高度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),#使用3个连续的卷积层和较小的卷积窗口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(),#这里,全连接层的输出数量太多,使用暂退层来缓解过拟合nn.Linear(6400,4096),nn.ReLU(),nn.Dropout(p=0.5), #有50%的概率在训练过程中将特征随机置为0nn.Linear(4096,4096),nn.ReLU(),nn.Dropout(p=0.5),#最后的输出层,因为我们使用的是Fashion-MNIST,所以类别数为10,而非论文中的1000nn.Linear(4096,10)
)
#构造一个高度和宽度都为224的单通道数据,来观察每一层输出的形状
X = torch.randn(1,1,224,224)
for layer in net:X = layer(X)print(layer.__class__.__name__,"输出形状为:\t", X.shape)#结果:
Conv2d 输出形状为: torch.Size([1, 96, 54, 54])
ReLU 输出形状为: torch.Size([1, 96, 54, 54])
MaxPool2d 输出形状为: torch.Size([1, 96, 26, 26])
Conv2d 输出形状为: torch.Size([1, 256, 26, 26])
ReLU 输出形状为: torch.Size([1, 256, 26, 26])
MaxPool2d 输出形状为: torch.Size([1, 256, 12, 12])
Conv2d 输出形状为: torch.Size([1, 384, 12, 12])
ReLU 输出形状为: torch.Size([1, 384, 12, 12])
Conv2d 输出形状为: torch.Size([1, 384, 12, 12])
ReLU 输出形状为: torch.Size([1, 384, 12, 12])
Conv2d 输出形状为: torch.Size([1, 256, 12, 12])
ReLU 输出形状为: torch.Size([1, 256, 12, 12])
MaxPool2d 输出形状为: torch.Size([1, 256, 5, 5])
Flatten 输出形状为: torch.Size([1, 6400])
Linear 输出形状为: torch.Size([1, 4096])
ReLU 输出形状为: torch.Size([1, 4096])
Dropout 输出形状为: torch.Size([1, 4096])
Linear 输出形状为: torch.Size([1, 4096])
ReLU 输出形状为: torch.Size([1, 4096])
Dropout 输出形状为: torch.Size([1, 4096])
Linear 输出形状为: torch.Size([1, 10])
手写计算:
2.4. 训练模型
将AlexNet直接应用于Fashion-MNIST的一个问题是,[Fashion-MNIST图像的分辨率](28×28像素)
(低于ImageNet图像。) 为了解决这个问题,(我们将它们增加到224×224)
(通常来讲这不是一个明智的做法,但在这里这样做是为了有效使用AlexNet架构)
#读取数据集
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()#结果:
loss 0.328, train acc 0.879, test acc 0.870
26.0 examples/sec on cpu
总结
AlexNet的架构与LeNet相似,但使用了更多的卷积层和更多的参数来拟合大规模数据集。虽然它已经被更有效的架构所超越,但它是从浅层网络到深层网络的关键一步。
Dropout、ReLU和预处理是提升计算机视觉任务性能的其他关键步骤。
是以圣人不行而知,不见而明,不为而成。
–2023-10-14 进阶篇
相关文章:
![](https://img-blog.csdnimg.cn/28790a88becc43f581db7acb4ccaf7f1.png)
深度学习——深度卷积神经网络(AlexNet)
深度学习——深度卷积神经网络(AlexNet) 文章目录 前言一、学习表征二、AlexNet实现2.1. 模型设计2.2. 激活函数2.3. 容量控制与预处理2.4. 训练模型 总结 前言 在前面学习了卷积神经网络的基本原理,之后将继续学习现代卷积神经网络架构。而本章将学习其…...
![](https://img-blog.csdnimg.cn/img_convert/e9dcbfd19a2eae0856ccdc5a53d09cd4.jpeg)
提高编程效率-Vscode实用指南
您是否知道全球73%的开发人员依赖同一个代码编辑器? 是的,2023 年 Stack Overflow 开发者调查结果已出炉,Visual Studio Code 迄今为止再次排名第一最常用的开发环境。 “Visual Studio Code 仍然是所有开发人员的首选 IDE,与专业…...
![](https://www.ngui.cc/images/no-images.jpg)
ES 数据库
ES 数据库 通过 API 查询通过 JSON 查询 熟悉 es 的同学都知道 es 一般有两种查询方式 1,在 java 中构建查询对象,调用 es 提供的 api 做查询 2,使用 json 调用接口做查询 查询语句无非是将足够的信息丢给数据库,但是它却和 SQL …...
![](https://www.ngui.cc/images/no-images.jpg)
面试经典150题——Day14
文章目录 一、题目二、题解 一、题目 134. Gas Station There are n gas stations along a circular route, where the amount of gas at the ith station is gas[i]. You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from the ith stati…...
![](https://img-blog.csdnimg.cn/img_convert/af02961e6a4d2f425e1d2115d2d46527.webp?x-oss-process=image/format,png)
Pika v3.5.1发布!
Pika 社区很高兴宣布,我们今天发布已经过我们生产环境验证 v3.5.1 版本,https://github.com/OpenAtomFoundation/pika/releases/tag/v3.5.1 。 该版本不仅做了很多优化工作,还引入了多项新功能。这些新功能包括 动态关闭 WAL、ReplicationID…...
![](https://www.ngui.cc/images/no-images.jpg)
Kotlin中的数组
数组是一种常见的数据结构,用于存储相同类型的多个元素。在 Kotlin 中,我们可以使用不同的方式声明、初始化和操作数组。 在 Kotlin 中,有多种方式可以定义和操作数组。我们将通过以下示例代码来展示不同的数组操作: fun main()…...
![](https://img-blog.csdnimg.cn/7af3e5988e5c4c02ae14d21629831e84.gif)
(3) OpenCV图像处理kNN近邻算法-识别摄像头数字
目录 一、代码简介 二、程序代码 三、使用的图片资源 1、图片digits.png...
![](https://img-blog.csdnimg.cn/f99fa4229f2a457988ce79d6e87abda7.png)
上海亚商投顾:沪指震荡调整 转基因概念股逆势大涨
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日低开低走,深成指、创业板指均跌超1%,双双创出年内新低。转基因概念股逆势大涨…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
abap中程序跳转(全)
1.常用 1.CALL TRANSACTION 1.CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECK [AND SKIP FIRST SCREEN]. 其中ta为事务码tcode使用时要打单引号() 2. CALL TRANSACTION ta WITH|WITHOUT AUTHORITY-CHECK USING bdc_tab { {[MODE mode] [UPDATE u…...
![](https://img-blog.csdnimg.cn/img_convert/03e5edcee1e8c6f7145e6e85023817dd.png)
启动速度提升 10 倍:Apache Dubbo 静态化方案深入解析
作者:华钟明 文章摘要: 本文整理自有赞中间件技术专家、Apache Dubbo PMC 华钟明的分享。本篇内容主要分为五个部分: -GraalVM 直面 Java 应用在云时代的挑战 -Dubbo 享受 AOT 带来的技术红利 -Dubbo Native Image 的实践和示例 -Dubbo…...
![](https://www.ngui.cc/images/no-images.jpg)
PCB命名规则-allegro
PCB命名规则-allegro 一、焊盘命名规则 1、 贴片矩形焊盘 命名规则:SMD长(L)宽(W)(mil) 举例:SMD90X60 2、 贴片圆焊盘 命名规则:SMDC焊盘直径(D&…...
![](https://img-blog.csdnimg.cn/caf5fe620f0647d18a6ffcf629648b61.png)
[架构之路-240]:目标系统 - 纵向分层 - 应用层 - 应用层协议与业务应用程序的多样化,与大自然生物的丰富多彩,异曲同工
目录 前言: - 倒金子塔结构 - 大自然的组成 一、应用层在计算机系统中的位置 1.1 计算机应用程序的位置 1.1.1 业务应用程序概述 1.1.2 应用程序的分类 - 按照计算机作用范围 1.1.3 业务应用程序分类 - 按照行业分类 1.2 网络应用协议的位置 1.2.1 网络协…...
![](https://img-blog.csdnimg.cn/ab373fe3503942e293792da43e475c1d.webp)
探索数字时代的核心:服务器如何塑造未来并助你成就大业
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
![](https://img-blog.csdnimg.cn/f35815065be04f888151bc72c6ada8b3.png)
spring6-资源操作:Resources
资源操作:Resources 1、Spring Resources概述2、Resource接口3、Resource的实现类3.1、UrlResource访问网络资源3.2、ClassPathResource 访问类路径下资源3.3、FileSystemResource 访问文件系统资源3.4、ServletContextResource3.5、InputStreamResource3.6、ByteAr…...
![](https://img-blog.csdnimg.cn/img_convert/f85f78f6940bc7970524cc8b90fcedba.png)
C语言 内存
内存分配 内存分配的类型 C/C中内存分为5个区,分别为栈区、堆区、全局/静态存储区、常量存储区、代码区 静态内存分配:编译时分配,包括全局、静态全局、静态局部三种变量。 动态内存分配:运行时分配,包括栈&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
Java设计模式之备忘录模式
备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不暴露对象内部状态的情况下捕获和恢复对象的内部状态。该模式通过在对象之外保存和恢复对象的状态,使得对象可以在需要时回滚到之前的状态。 在备忘录模式中ÿ…...
![](https://img-blog.csdnimg.cn/0059364b361442baa6e8713ef68f816d.png)
深度学习 | Pytorch深度学习实践
一、overview 基于pytorch的深度学习的四个步骤基本如下: 二、线性模型 Linear Model 基本概念 数据集分为测试集和训练集(训练集、开发集)训练集(x,y)测试集只给(x)过拟合…...
![](https://img-blog.csdnimg.cn/img_convert/662f75918c8f356f3332aa5c24511923.png)
Elasticsearch7.9.3保姆级安装教程
Linux版本Elasticsearch版本(待安装)Kibana版本(待安装)CentOS 77.9.37.9.3 一、下载地址 1、官网下载 打开地址 https://www.elastic.co/cn/downloads/past-releases#elasticsearch,按如图所示选择对应版本即可 2、采用wget下载 为了不必要的麻烦,建…...
![](https://img-blog.csdnimg.cn/img_convert/4c50904ff1a36991af3c339d3fc536e5.png)
深入使用探讨 PuppeteerSharp 抓取 LinkedIn 页面的步骤
LinkedIn是全球最大的职业社交平台之一,拥有大量的用户和企业信息。用户可以在上面建立个人职业资料、与其他用户建立联系、分享职业经验和获取行业动态。由于其庞大的用户群体和丰富的数据资源,开发者们对于获取LinkedIn数据的需求日益增长。 Puppeteer…...
![](https://img-blog.csdnimg.cn/2cce783aff5e445091975bfdcf9eb6de.png)
联合体(共用体)
1. 联合类型的定义 联合也是一种特殊的自定义类型。 这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间。 2.联合大小的计算 联合的大小 至少是最大成员的大小 。 当最大成员大小不是最大对齐数的整数倍的时候,就要对 齐到最大对齐数…...
![](https://www.ngui.cc/images/no-images.jpg)
从零开始:GitFlow详细教程,轻松掌握分支策略
前序 GitFlow是一种用于管理Git仓库中软件开发工作流程的模型,它提供了一种结构化的方法来处理特性开发、版本发布和维护。下面是一个详细的GitFlow教程,帮助你了解GitFlow的基本概念和使用方法。 安装GitFlow 首先,确保你已经安装了Git。…...
![](https://img-blog.csdnimg.cn/07a27030fcf24dae93367a0f33ba9111.png#pic_center)
深度学习硬件介绍
目录 1. 深度学习电脑选型1.1 深度学习常用框架1.2 深度学习硬件选择1.3 GPU 厂商介绍科普 你真的需要这么一块阵列卡 1. 深度学习电脑选型 1.1 深度学习常用框架 常见的深度学习框架:百度的飞桨框架、Google 的TensorFlow,伯克利亚学院的Caffe&#x…...
![](https://img-blog.csdnimg.cn/953710f4420e40e8bf6c06f123f8d565.png)
利用向导创建MFC
目录 1、项目的创建: 2、项目的管理 : 3、分析以及生成的项目代码 : (1)、查看CFrame中的消息映射宏 (2)、自动生成事件 (3)、在CFrame中添加对应的鼠标处理函数 …...
![](https://img-blog.csdnimg.cn/891965f4bb0340d4892da3d8a374695a.png)
MySQL 8.0 OCP认证精讲视频、环境和题库之五 事务、缓存
redo log buffer: 缓存与事务有关的redo log ,用来对mysql进行crash恢复,不可禁用; 日志缓冲区是存储要写入磁盘上日志文件的数据的内存区域。日志缓冲区大小由innodb_Log_buffer_size变量定义。 默认大小为16MB。日志缓冲区的内容会定…...
![](https://img-blog.csdnimg.cn/ab93d6dcfaf14d1bb72091191129ec88.png)
ACL配置
目录 1.使用基本ACL配置交换telnet访问的权限 2.使用高级ACL配置流分类实现限制互访某一台服务器 3.使用二层ACL配置流分类拒绝指定报文通过 4.通过流策略实现策略路由(重定向到不同的下一跳) 5.通过流策略实现不同网段间限制互访 6.通过流策略实现限速功能 7.通过流策略…...
![](https://img-blog.csdnimg.cn/1440cb7bb0f24f36aa6c65436f5c9bf6.png)
微信小程序修改van-popup的背景颜色
效果图: van-popup背景颜色渐变 使用深度修改样式不生效,直接在 custom-style里面修改即可; <van-popup position"bottom"custom-style"height:25%;background:linear-gradient(95deg, #F8FCFF -0.03%, #EDF5FF 64.44…...
![](https://img-blog.csdnimg.cn/ed8d0f80e80a4ea5a54e83c3370a57de.png)
SpringCloud-Nacos
一、介绍 (1)作为服务注册中心和配置中心 (2)等价于:EurekaConfigBus (3)nacos集成了ribbon,支持负载均衡 二、安装 (1)官网 (2) …...
![](https://www.ngui.cc/images/no-images.jpg)
动态规划12(Leetcode221最大正方形)
代码: class Solution {public int maximalSquare(char[][] matrix) {int m matrix.length;int n matrix[0].length;int[][]area new int[m][n];area[0][0] matrix[0][0];int max 0;for(int i0;i<m;i){area[i][0] matrix[i][0]1? 1:0;max Math.max(area…...
![](https://img-blog.csdnimg.cn/b9c7ca570062479c9825668af36c026a.png)
【Git】bad signature 0x00000000 index file corrupt. fatal: index file corrupt
问题描述 电脑写代码时蓝屏。重启后 git commit 出错。 error: bad signature 0x00000000 fatal: index file corrupt原因分析 当电脑发生蓝屏或异常关机时,Git 的索引文件可能损坏。 解决方案 删除损坏的索引文件。 rm -Force .git/index回退到上一个可用的版…...
![](https://img-blog.csdnimg.cn/img_convert/bc1dad20217edd96a1aec08551f42642.webp?x-oss-process=image/format,png)
GO 语言的函数??
函数是什么? 学过编程的 xdm 对于函数自然不会陌生,那么函数是什么呢? 函数是一段可以重用的代码块,可以被多次调用,我们可以通过使用函数,提高咱们代码代码的模块化,提高程序的可读性和可维护…...
![](https://img2018.cnblogs.com/blog/401165/201902/401165-20190216115032486-898815484.png)
无锡建设网站/疫情最新资讯
CefSharp在NuGet的简介是“The CefSharp Chromium-based browser component”,机翻的意思就是“基于Cefsharp Chromium的浏览器组件” 请注意本文不会有太多功能的详细介绍,只有实现相关需求的基本功能 请注意本次使用CefSharp版本为57.0.0,最…...
![](/images/no-images.jpg)
做ppt模板网站/百度百科入口
http://rcv.kaist.ac.kr/~ail/...
![](https://img-blog.csdnimg.cn/20201124193237533.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L015cm9uQ2hhbQ==,size_16,color_FFFFFF,t_70)
开不锈钢公司怎么做网站/浙江网站seo
目录 1、什么是事务? 2、事务的几个特性(ACID) 2.1、原子性(Atomicity) 2.2、一致性(Consistency) 2.3、隔离性(Isolation) 2.4、持久性(Durability) 3、MySQL中事务操作 3.1、隐式事务 3.2、显式事务 2.3、savepoint关键字 2.4、…...
![](/images/no-images.jpg)
网站用图片做背景图片/石家庄百度搜索引擎优化
C语言简介:BCPL->newB->C->UNIX->Linux->gccC语言专门编写操作系统的语言,所以天生适合对硬件编程,也以运行速度快著称,也非常适合实现数据结构和算法。由于出现时间过早,有很多缺陷,也没想…...
![](https://img-blog.csdnimg.cn/img_convert/7e43c44b2b18bdf6ccfc67393358440f.png)
机械网站案例/百度搜索网页
大家好,我是煎鱼。最近我有一个朋友公司踩了不少消息队列(MQ)的坑,让人无奈不已。因此计划写 MQ 系列的技术文章,来科普更多这块的知识。目前 MQ 也是互联网应用中非常常用的基础组件了,面试特爱问。基本有…...
![](https://img-blog.csdnimg.cn/e68b98d7366745e7ab3c365d38a155de.png)
教程建设网站/线上招生引流推广方法
Arduino IDE作为一种开源硬件开发软件工具,目前拥有很好的应用生态和众多的用户,本文介绍Wio RP2040无线WiFi迷你开发板Arduino IDE环境安装与设置,并给出采用Arduino C控制Wio RP2040开发板板载LED和扩展一只LED发光的程序示例。 本文动手实…...