《动手学深度学习》(PyTorch版)要点笔记
本专栏用于记录博主在学习深度学习是的一些主要知识点
Hurri_cane
自动驾驶算法工程师
展开
-
《动手学深度学习》(PyTorch版)要点笔记 - 11 【3.15.2 随机初始化模型参数】
在神经网络中,通常需要随机初始化模型参数。下面我们来解释这样做的原因。回顾3.8节(多层感知机)图3.3描述的多层感知机。为了方便解释,假设输出层只保留一个输出单元o1,删除o2,o3 以及指向它们的箭头)如图:且隐藏层使用相同的激活函数。如果将每个隐藏单元的参数都初始化为相等的值,那么在正向传播时每个隐藏单元将根据相同的输入计算出相同的值,并传递至输出层。在反向传播中,每个隐藏单元的参数梯度值相等。因此,这些参数在使用基于梯度的优化算法迭代后值依然相等。之后的迭代也是如此。在这种情况下,无论隐藏单元原创 2020-08-20 21:04:42 · 360 阅读 · 0 评论 -
《动手学深度学习》(PyTorch版)要点笔记 - 10 【3.14.4 训练深度学习模型,正向传播和反向传播的联系】
在训练深度学习模型时,正向传播和反向传播之间相互依赖。下面我们仍然以本节中的样例模型分别阐述它们之间的依赖关系。一方面,正向传播的计算可能依赖于模型参数的当前值,而这些模型参数是在反向传播的梯度计算后通过优化算法迭代的。例如,计算正则化项依赖模型参数W(1) 和W(2)的当前值,而这些当前值是优化算法最近一次根据反向传播算出梯度后迭代得到的。另一方面,反向传播的梯度计算可能依赖于各变量的当前值,而这些变量的当前值是通过正向传播计算得到的。举例来说,参数梯度的计算需要依赖隐藏层变量的当前值h。这个原创 2020-08-20 21:03:19 · 306 阅读 · 0 评论 -
《动手学深度学习》(PyTorch版)要点笔记 - 9 【3.14.3 反向传播】
目录一、链式求导二、目标函数J对权重求偏导书中片段公式间的联系步骤细节推导一、链式求导Z=f(g(X))dZ/dX=dZ/dY * dY/dX二、目标函数J对权重求偏导书中片段公式间的联系步骤细节推导原创 2020-08-20 20:59:26 · 159 阅读 · 0 评论 -
《动手学深度学习》(PyTorch版)要点笔记 - 8 【3.14.2 正向传播的计算图】【精】
这里写目录标题前言正文前言正向传播计算图在深度学习理解中尤为重要,下面展开博主对正向传播的理解,以书中3.14.2节为例正文图3.6正向传播计算图的各个元素理解:方框中x为数据集的特征,方框中y为数据集的标签方框中的z为隐藏层输出方框中的h为激活层输出方框中的o为线性层输出W1为隐藏层权重;W1为线性权重圆圈L2为求W1和W2的L2范数的意思,即W1和W2矩阵变平为向量后计算L2范数(平方和再开方)圆圈中s表示通过求L2范数得到的正则化项(注意:s不单单是L2范数,还需要乘上λ/2原创 2020-08-20 20:53:47 · 138 阅读 · 0 评论 -
《动手学深度学习》(PyTorch版)要点笔记 - 7 【正则化的L2范数】
目录L2范数:正则化:L2范数:L2范数的定义其实是一个数学概念,其定义如下:正则化:正则化其实是一种策略,以增大训练误差为代价来减少测试误差的所有策略我们都可以称作为正则化。换句话说就是正则化是为了防止模型过拟合。L2范数就是最常用的正则化方法之一。参考:https://blog.csdn.net/u010725283/article/details/79212762...原创 2020-08-20 20:48:40 · 197 阅读 · 0 评论 -
《动手学深度学习》(PyTorch版)要点笔记 - 6 【3.14.1 正向传播】
图本节知识点通用图像便可描述清楚:加墨迹版原创 2020-08-20 20:43:40 · 128 阅读 · 0 评论 -
《动手学深度学习》(PyTorch版)要点笔记 - 5 【3.13 丢弃法】
目录丢弃法丢弃法除了的权重衰减以外,深度学习模型常常使用丢弃法(dropout)来应对过拟合问题。当对该隐藏层使用丢弃法时,该层的隐藏单元将有一定概率被丢弃掉。设丢弃概率p,那么有p的概率hi会被清零,有1−p的概率hi会除以1−p做拉伸。丢弃概率是丢弃法的超参数。具体来说,设随机变量ξi为0和1的概率分别为p和1−p。使用丢弃法时我们计算新的隐藏单元h′i由于E(ξi)=1−pE即丢弃法不改变其输入的期望值。让我们对图3.3中的隐藏层使用丢弃法,一种可能的结果如图3.5所示,其中h2和h5原创 2020-08-20 20:40:56 · 168 阅读 · 0 评论 -
《动手学深度学习》(PyTorch版)要点笔记 - 4 【3.11.2.3 K折交叉验证】
目录K折交叉验证K折交叉验证由于验证数据集不参与模型训练,当训练数据不够用时,预留大量的验证数据显得太奢侈。一种改善的方法是K折交叉验证(K-fold cross-validation)。在K折交叉验证中,我们把原始训练数据集分割成K个不重合的子数据集,然后我们做K次模型训练和验证。每一次,我们使用一个子数据集验证模型,并使用其他K−1个子数据集来训练模型。在这K次训练和验证中,每次用来验证模型的子数据集都不同。最后,我们对这K次训练误差和验证误差分别求平均。...原创 2020-08-20 20:33:26 · 805 阅读 · 0 评论 -
《动手学深度学习》(PyTorch版)要点笔记 - 3 【3.11.2.1 验证数据集】
目录验证数据集验证数据集严格意义上讲,测试集只能在所有超参数和模型参数选定后使用一次。不可以使用测试数据选择模型,如调参。由于无法从训练误差估计泛化误差,因此也不应只依赖训练数据选择模型。鉴于此,我们可以预留一部分在训练数据集和测试数据集以外的数据来进行模型选择。这部分数据被称为验证数据集,简称验证集(validation set)。例如,我们可以从给定的训练集中随机选取一小部分作为验证集,而将剩余部分作为真正的训练集。...原创 2020-08-19 20:40:49 · 270 阅读 · 0 评论 -
《动手学深度学习》(PyTorch版)要点笔记 - 2 【3.11.1 训练误差和泛化误差】
目录训练误差泛化误差总结训练误差训练误差(training error):模型在训练数据集上表现出的误差泛化误差泛化误差(generalization error):模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似总结一味地降低训练误差并不意味着泛化误差一定会降低。机器学习模型应关注降低泛化误差。...原创 2020-08-19 20:36:58 · 425 阅读 · 0 评论 -
《动手学深度学习》(PyTorch版)要点笔记 - 1 【3.8.2 激活函数】
目录为什么需要激活函数常用的激活函数为什么需要激活函数全连接层只是对数据做仿射变换(affine transformation),而多个仿射变换的叠加仍然是一个仿射变换。解决问题的一个方法是引入非线性变换,例如对隐藏变量使用按元素运算的非线性函数进行变换,然后再作为下一个全连接层的输入。这个非线性函数被称为激活函数(activation function)。下面我们介绍几个常用的激活函数。常用的激活函数3.8.2.1 ReLU函数 ReLU(x)=max(x,0)3.8.2.2 sigmoid函原创 2020-08-19 20:31:41 · 150 阅读 · 0 评论 -
《动手学深度学习》(PyTorch版) - 专栏说明
目录博主近期在学习深度学习,在网上找了一本很优秀的项目《动手学深度学习》(PyTorch版)其链接如下:传送门本书将《动手学深度学习》 原书中MXNet代码实现改为PyTorch实现。原书作者:阿斯顿·张、李沐、扎卡里 C. 立顿、亚历山大 J. 斯莫拉以及其他社区贡献者GitHub地址:https://github.com/d2l-ai/d2l-zh面向人群本项目面向对深度学习感兴趣,尤其是想使用PyTorch进行深度学习的童鞋。本项目并不要求你有任何深度学习或者机器学习的背景知识,你只需了原创 2020-08-16 20:06:17 · 416 阅读 · 0 评论