深度学习-李沐-第五节-层和块
层和块 块 块(block):描述单个层、由多个层组成的组件或整个模型本身。使用块进行抽象的一个好处是可以将一些块组合成更大的组件, 这一过程通常是递归的。 通过定义代码来按需生成任意复杂度的块, 我们可以通过简洁的代码实现复杂的神经网络。 代码实现: 从编程的角度来看,块由类(class)表示。 它的任何子类都必须定义一个将其输入转换为输出的前向传播函数,并且必须存储任何必需的参数(有些块不需要任何参数)。 下面的代码生成一个网络,其中包含一个具有256个单元和ReLU激活函数的全连接隐藏层, 然后是一个具有10个隐藏单元且不带激活函数的全连接输出层...
深度学习-李沐-第五节-自定义层、读写文件、GPU
自定义层、读写文件、GPU 自定义曾 深度学习成功背后的一个因素是神经网络的灵活性: 我们可以用创造性的方式组合不同的层,从而设计出适用于各种任务的架构。 例如,研究人员发明了专门用于处理图像、文本、序列数据和执行动态规划的层。 未来,你会遇到或要自己发明一个现在在深度学习框架中还不存在的层。 不带参数的层 CenteredLayer类要从其输入中减去均值。 要构建它,我们只需继承基础层类并实现前向传播功能。 import torch import torch.nn.functional as F from torch imp...
深度学习-李沐-第六节-图像卷积
图像卷积 互相关运算 严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cross-correlation),而不是卷积运算。在卷积层中,输入张量和核张量通过互相关运算产生输出张量。 import torch from torch import nn from d2l import torch as d2l def corr2d(X, K): #@...
深度学习-李沐-第六节-从全连接层到卷积
从全连接层到卷积 多层感知机适合处理表格数据,其中行对应样本,列对应特征。对于表格数据,我们寻找的模式可能涉及特征之间的交互,但是不能预先假设任何与特征交互相关的先验结构。 积神经网络(convolutional neural networks,CNN)是机器学习利用自然图像中一些已知结构的创造性方法。 不变性 平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。 局部性(locality):神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在...
深度学习-李沐-第六节-汇聚层与卷积神经网络LeNet
汇聚层与卷积神经网络LeNet 汇聚层 双重目的:降低卷积层对位置的敏感性,同时降低对空间降采样表示的敏感性。 最大汇聚层和平均汇聚层 与卷积层类似,汇聚层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为汇聚窗口)遍历的每个位置计算一个输出。 不同于卷积层中的输入与卷积核之间的互相关计算,汇聚层不包含参数。 相反,池运算是确定性的,我们通常计算汇聚窗口中所有元素的最大值或平均值。这些操作分别称为最大汇聚层(maximum pooling)和平均汇聚层(average pooling)。 在这两种情况下,与互...
深度学习-李沐-第六节-填充、步幅、多输入多输出通道
填充、步幅、多输入多输出通道 填充 为什么要填充 由于我们通常使用小卷积核,因此对于任何单个卷积,我们可能只会丢失几个像素。 但随着我们应用许多连续卷积层,累积丢失的像素数就多了。 解决这个问题的简单方法即为填充(padding)。 填充定义以及举例 在输入图像的边界填充元素(通常填充元素是0)。 输出大小:(输入-卷积核+步幅+填充)/ 步幅 `python...
深度学习-李沐-第七节-Residual Networks
残差网络 核心思想:每个附加层都应该更容易地包含原始函数作为其元素之一 残差块 ResNet沿用了VGG完整33的卷积层设计。 残差块里首先有2个有相同输出通道数的33卷积层。 每个卷积层后接一个批量规范化层和ReLU激活函数。 然后我们通过跨层数据通路,跳过这2个卷积运算,将输入直接加在最后的ReLU激活函数前。 这样的设计要求2个卷积层的输出与输入形状一样,从而使它们可以相加。 如果想改变通道数,就需要引入一个额外的1*1卷积层来将输入变换成需要的形状后再做相加运算。 残...
深度学习-李沐-第七节-ResNet
残差网络 核心思想:每个附加层都应该更容易地包含原始函数作为其元素之一 残差块 ResNet沿用了VGG完整33的卷积层设计。 残差块里首先有2个有相同输出通道数的33卷积层。 每个卷积层后接一个批量规范化层和ReLU激活函数。 然后我们通过跨层数据通路,跳过这2个卷积运算,将输入直接加在最后的ReLU激活函数前。 这样的设计要求2个卷积层的输出与输入形状一样,从而使它们可以相加。 如果想改变通道数,就需要引入一个额外的1*1卷积层来将输入变换成需要的形状后再做相加运算。 残...
深度学习-李沐-第七节-批量规范化
批量规范化 使用原因 原理 批量规范化层 批量规范化和其他层之间的一个关键区别是,由于批量规范化在完整的小批量上运行,因此我们不能像以前在引入其他层时那样忽略批量大小。 ![](...
深度学习-李沐-第七节-深度卷积神经网络(AlexNet)
深度卷积神经网络(AlexNet) AlexNet AlexNet使用8层卷积神经网络 AlexNet比相对较小的LeNet5要深得多。 AlexNet由八层组成:五个卷积层、两个全连接隐藏层和一个全连接输出层。 其次,AlexNet使用ReLU而不是sigmoid作为其激活函数。 模型设计 在AlexNet的第一层,卷积窗口的形状是11×11。 由于ImageNet中大多数图像的宽和高比MNIST图像的多10倍以上,因此,需要一个更大的卷积窗口来捕获目标。 第二层中...