![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动手深度学习
文章平均质量分 67
苏小贤
这个作者很懒,什么都没留下…
展开
-
残差网络(ResNet)
残差网络(ResNet)对于残差网络的一点个人理解:残差网络就是通过嵌套函数不断在原函数的基础上增加残差快来扩大函数所能表示的范围以此来更能接近真正的表示函数复杂的函数类包含较小的函数类残差块 ResNet模型为什么深层的网络,底层比较难训练?可以这样想:越靠近损失函数误差越小因为我们经过训练预测值和真实值之间的差距已经越来越小了所以梯度会越来越小当做反向传播的时候越往回传梯度就越小训练就越困难。import torchfrom torch import nnfrom torch原创 2021-09-24 15:21:59 · 373 阅读 · 0 评论 -
batch normalization(批量归一化)
批量归一化训练深层神经网络是十分困难的,特别是在较短的时间内使他们收敛更加棘手。 批量归一化(batch normalization)这是一种流行且有效的技术,可持续加速深层网络的收敛速度。 批量归一化使得我们能够训练 100 层以上的网络。1 训练深层网络首先,数据预处理的方式通常会对最终结果产生巨大影响。使用真实数据时,我们的第一步是标准化输入特征,使其平均值为0,方差为1。这种标准化可以很好地与我们的优化器配合使用,因为它可以将参数的量级进行统一。第二,对于典型的多层感知机或卷积神经网络.原创 2021-09-23 11:28:54 · 755 阅读 · 0 评论 -
1 * 1卷积层
对于1 * 1卷积层自己的一点理解1 *1 卷积层最早是2014年ICLR的一篇名为《Network In Network》的论文提出的从下面图片可以看成 1 * 1卷积层其实就相当于全连接层也就是相当于输入乘以权重。它为改变输入的大小,1*1 卷积的作用一、 实现特征通道的升维和降维 通过控制卷积核的数量达到通道数大小的放缩。而池化层只能改变高度和宽度,无法改变通道数。二、 增加非线性 1×1卷积核的卷积过程相当于全连接层的计算过程,并且还加入了非线性激活函数,从而可以增加网络的非线性,使原创 2021-09-18 10:11:34 · 1453 阅读 · 0 评论 -
图像卷积操作
图像卷积 1 互相关运算严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是 互相关运算 (cross-correlation),而不是卷积运算。 在卷积层中,输入张量和核张量通过互相关运算产生输出张量。首先,我们暂时忽略通道(第三维)这一情况,看看如何处理二维图像数据和隐藏表示。在下图中,输入是高度为 3 、宽度为 3 的二维张量(即形状为 3×3 )。卷积核的高度和宽度都是 2 ,而卷积核窗口(或卷积窗口)的形状由内核的高度和宽度决定(即 2×2 )。import to.转载 2021-09-17 20:48:47 · 1323 阅读 · 0 评论 -
GPU计算
1 计算设备在PyTorch中,CPU和GPU可以用torch.device(‘cpu’)和torch.cuda.device(‘cuda’)表示。应该注意的是,cpu设备意味着所有物理CPU和内存。这意味着PyTorch的计算将尝试使用所有CPU核心。然而,gpu设备只代表一个卡和相应的显存。如果有多个GPU,我们使用torch.cuda.device(f’cuda:{i}’)来表示第(i)块GPU((i)从0开始)。另外,cuda:0和cuda是等价的。import torchfrom torch转载 2021-09-17 09:53:45 · 715 阅读 · 0 评论 -
参数管理与共享
参数管理一旦选择了架构并设置了超参数,就进入了训练阶段。此时,目标是找到使损失函数最小化的参数值。经过训练后需要使用这些参数来做出未来的预测。此外,有时我们希望提取参数,以便在其他环境中复用它们,将模型保存到磁盘,以便它可以在其他软件中执行,或者为了获得科学的理解而进行检查。大多数情况下,可以忽略声明和操作参数的具体细节,而只依靠深度学习框架来完成繁重的工作。然而,当我们离开具有标准层的层叠架构时,我们有时会陷入声明和操作参数的麻烦中。在本节中,我们将介绍以下内容:转载 2021-09-16 20:57:56 · 641 阅读 · 0 评论 -
反向传播、数值稳定性、模型初始化、激活函数
1 反向传播在训练神经网络时,正向传播和后向传播相互依赖。对于正向传播,我们沿着依赖的方向遍历计算图并计算其路径上的所有变量。然后将这些用于反向传播,其中计算顺序与计算图的相反。以上述简单网络为例进行说明。一方面,在正向传播期间计算正则项取决于模型参数 W(1) 和 W(2) 的当前值。它们是由优化算法根据最近迭代的反向传播给出的。另一方面,反向传播期间参数 的梯度计算取决于由正向传播给出的隐藏变量 h 的当前值。因此,在训练神经网络时,在初始化模型参数后,我们交替使用正向传播和反向传播,利用反向传播给.转载 2021-09-15 10:56:58 · 195 阅读 · 0 评论 -
丢弃法(dropout)
1 对于丢弃法的一点小思考(1) 对于模型设计我们可以把隐藏层设计的稍微大一点然后用drop out控制隐藏层大小这样的设计可能比隐藏层设计的小一点的效果更好,防止过拟合,drop out 其实就是一个正则项。(2) drop out 就是随机丢弃隐藏层神经元的个数从而防止参数过分依赖训练数据,增加参数对数据集的泛化能力(3) Drop out可以减少神经元之间复杂的共适应关系,因为Dropout使得某两个神经元不一定每次都在一个子网络结构中出现。基于此权值的更新不在依赖于固定关系的隐含节点的共同作原创 2021-09-14 11:32:58 · 1566 阅读 · 0 评论 -
权重衰减( L2 正则化)
对于权重衰减自己的一点理解加入L2正则化后损失函数变得平滑了很多如图所示,蓝色的曲线为未加入L2正则项的曲线,绿色为加入L2正则项的曲线这样对于数据的拟合变得不这么剧烈从而缓解了过拟合。如图所示,绿色为损失项,橙色为正则项W权重越大惩罚项也就是橙色曲线的作用就越明显整个图就越靠近原点从而使曲线变平滑不再那么的剧烈从而减小过拟合较小的 λ 值对应较少约束的 w ,而较大的 λ 值对 w 的约束更大import torchfrom torch import nnfrom d2l import to转载 2021-09-13 21:23:21 · 1020 阅读 · 0 评论 -
多层感知机从零开始实现
## 多层感知机的从零开始实现import torchfrom torch import nnfrom d2l import torch as d2lbatch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size) #生成两个数据迭代器初始化模型参数num_inputs, num_outputs, num_hiddens = 784, 10, 256W1 = nn.Parameter(torc转载 2021-09-13 14:51:43 · 187 阅读 · 0 评论