23 经典卷积神经网络 LeNet【动手学深度学习v2】(笔记)

目录

一、LeNet

 二、代码实现

三、问题回答


一、LeNet

1、产生由来,是当时想要识别邮政上的邮编,然后投递到对应位置,节省人力

卷积层的处理方法,我们可以在图像中保留空间结构。 同时,用卷积层代替全连接层的另一个好处是:模型更简洁、所需的参数更少。

LeNet,它是最早发布的卷积神经网络之一,因其在计算机视觉任务中的高效性能而受到广泛关注。 这个模型是由AT&T贝尔实验室的研究员Yann LeCun在1989年提出的(并以其命名),目的是识别图像 (LeCun et al., 1998)中的手写数字。

 2、这个项目带来的一个很有用的数据集

 3、LeNet:里面两个卷积层,两个池化层,然后使用全连接,120再到84,最后使用高斯激活

请注意,虽然ReLU和最大汇聚层更有效,但它们在20世纪90年代还没有出现。每个卷积层使用5×5卷积核和一个sigmoid激活函数。这些层将输入映射到多个二维特征输出,通常同时增加通道的数量。

为了将卷积块的输出传递给稠密块,我们必须在小批量中展平每个样本。换言之,我们将这个四维输入转换成全连接层所期望的二维输入。

4、总结,好像看着挺简单的,但是前人能想出这样的方法真是不可思议,好聪明,下面代码实现有21min,加油!!!

 

 二、代码实现

1、LeNet由两个部分组成:卷积编码器和全连接密集块

2、x.view(-1,1,28,28),这里的 -1 指的是批量数不变,自动计算;不直接用reshape是因为这样可以放到nn.sequential里面;(批量数,通道数,行,列);批量数不变,通道数为1

3、Flatten是保留第一维批量维度的情况下,其他维度全部展平

4、mnist原始数据是28*28,这里加了padding就能实现论文里说的输入32*32了吧

5、建立LeNet:

  • 首先你要先reshape一下,将你的向量变成x.view(-1,1,28,28);
  • 卷积层,(1,6,kernel_size =5,padding=2),输入通道是1,输出通道是6; 输出的大小是(28+4-5+1)/1 ,(28*28);再sigmoid一下
  • 平均池化,(kernel_size=2,stride=2) ;输出大小,(28+0-2+2)/2 ,(14*14)
  • 卷积,(6,16,kernel_size =5);输出大小,(14+0-5+1)/1 ,(10*10);再sigmoid一下
  • 平均池化,(kernel_size=2,stride=2);输出大小,(10+0-2+2)/2 ,(5*5);做了一下flatten,展平了;
  • 多层感知机,第一层,nn.Linear(16*5*5,120);再sigmoid一下
  • 多层感知机,第二层,nn.Linear(120,84);再sigmoid一下
  • 多层感知机,第三层,nn.Linear(84,10);

在整个卷积块中,与上一层相比,每一层特征的高度和宽度都减小了。

第一个卷积层使用2个像素的填充,来补偿5×5卷积核导致的特征减少。

相反,第二个卷积层没有填充,因此高度和宽度都减少了4个像素。

随着层叠的上升,通道的数量从输入时的1个,增加到第一个卷积层之后的6个,再到第二个卷积层之后的16个。

同时,每个汇聚层的高度和宽度都减半。

最后,每个全连接层减少维数,最终输出一个维数与结果分类数相匹配的输出。

 6、GPU实现

  • device = next(iter(net.parameters())).device  把第一个network的参数拿出来,看一下它的device
  • 多了一个device 
  • Xavier 函数作用是调整初始值,让输入和输出在一个合理区间,防止出现梯度消失或者梯度爆炸
  • 这里l 是nn.CrossEntropyLoss,它是求多个样本的交叉熵损失的求和平均, l*X.shape[0]表示每个样本的损失乘以批量大小,等于这个批量样本的总损失
  • 这里metric[0]的值是l*x.shape[0],最后又除以了x.shape[0],直接把l作为metric[0]的值不就好了吗
  • train的损失和准确率是最后一个batch的,test的损失是整个test数据集上的?

三、问题回答

  • view 数据本身不变
  • reshape 可以做一些数据的copy
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 动手深度学习v2是一本非常好的深度学习教材,是从谷歌机器习研究员李沐所主持的Gluon团队创作的。它提供了丰富的案例和实际应用,深入浅出地介绍了深度学习的基础理论和实践技能。 下载动手深度学习v2非常简单,可以通过访问官方网站来获取。首先,打开谷歌或百度搜索引擎,搜索"动手深度学习v2下载",就可以找到相关的下载链接。建议选择官网下载,因为官网下载最为安全可靠。 进入官网后,点击首页上的"下载"按钮,然后在目录下找到本书的下载链接,下载适合你的版本即可。此外,动手深度学习v2还有在线阅读的版本,方便习者随时随地习。 总的来说,动手深度学习v2是一本非常优秀的深度学习教材,相关下载链接也十分便捷,能够帮助广大习者更好地掌握深度学习相关的知识和技能。 ### 回答2: 动手深度学习v2是一本非常优秀的深度学习入门书籍,笔者十分推荐。如果您想要下载该书籍,可以使用以下方法: 1.进入动手深度学习v2的官网(https://zh.d2l.ai/),点击右上角的“Github”按钮,进入书籍的Github仓库。 2.在仓库中找到“releases”目录,选择最新的版本号,点击进入。 3.在该版本的页面中,找到“Source code (zip)”或“Source code (tar.gz)”选项,点击下载压缩包。 4.下载完成后,解压缩文件即可得到电子书的文件夹,其中包括PDF和HTML格式的书籍。 除此之外,您也可以在该官网中找到由中文社区翻译的在线电子书版本。在该电子书中,您可以直接在线阅读和习。值得注意的是,该书籍的在线翻译版本可能会比英文原版稍有滞后。如果您想要阅读最新的内容,请下载英文原版或者在该官网上查看最新的更新。 ### 回答3: 深度学习是现在的热门话题之一。而动手深度学习v2是一本非常好的深度学习教材,旨在为做实际项目的习者提供知识技能和实战经验。为了下载此书,您需要按照以下步骤进行。 首先,您需要访问动手深度学习官方网站,网址为d2l.ai。然后,您需要找到下载页面,这个页面可以通过页面上的“全书下载”按钮或主页面上的一个标签来访问。 在下载页面,您需要选择您所需要的版本,v2版本是最新版本。接着,您需要选择您所需的格式。您可以选择PDF格式或HTML格式,下方还提供了在线阅读链接。 若您选择了PDF格式,则需要点击下载链接,页面会跳到GitHub仓库中。在GitHub页面,您需要选择ZIP文件并下载。下载完成后,您就可以在本地解压并阅读这本书了。 若您选择了HTML格式,则不需下载,只需点击在线阅读链接即可。页面会跳转到包含书籍所有章节、实例代码、作者笔记等信息的HTML页面,您可以任意阅读或者下载章节(在左侧点击对应章节)。 总之,动手深度学习v2是一本亲身实践的深度学习教材,其深入浅出的讲解以及丰富的实战案例,能够帮助初者快速掌握深度学习这一技术,同时也是深度学习领域专业人士的必备读物。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值