![](https://i-blog.csdnimg.cn/direct/73c07993a785465bbe223a4fc638c27e.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
深度学习/机器学习入门
文章平均质量分 86
学习李沐《动手学深度学习》过程中留下的笔记与思考
Alkali!
本科:NUAACCST16191
硕士:SEUCSE220
展开
-
9-1 门控循环单元(GRU)
现在我们将定义隐状态的初始化函数。与 8-5节中定义的函数一样, 此函数返回一个形状为(批量大小,隐藏单元个数)的张量,张量的值全部为零。现在我们准备定义门控循环单元模型, 模型的架构与基本的循环神经网络单元是相同的, 只是权重更新公式更为复杂。H, = state# 计算更新门 Z。使用当前输入 X 和前一个隐藏状态 H 与对应权重矩阵相乘,加上偏置 b_z,然后应用 sigmoid 函数以得到更新门的值# 计算重置门 R。与更新门类似的计算,但使用不同的权重和偏置。原创 2024-08-25 00:20:36 · 631 阅读 · 0 评论 -
8-5 循环神经网络 RNN 的实现
高级API提供了循环神经网络的实现。我们构造一个具有256个隐藏单元的单隐藏层的循环神经网络层rnn_layer。事实上,我们还没有讨论多层循环神经网络的意义。现在仅需要将多层理解为一层循环神经网络的输出被用作下一层循环神经网络的输入就足够了。我们使用张量来初始化隐状态,它的形状是(隐藏层数,批量大小,隐藏单元数)。通过一个隐状态和一个输入,我们就可以用更新后的隐状态计算输出。需要强调的是,rnn_layer的“输出”(Y)不涉及输出层的计算: 它是指每个时间步的隐状态,这些隐状态可以用作后续输出层的输入。原创 2024-08-17 12:56:30 · 727 阅读 · 0 评论 -
8-4 循环神经网络
循环神经网络(recurrent neural networks,RNNs) 是具有隐状态的神经网络。在介绍循环神经网络模型之前, 我们首先回顾 4-1节中介绍的多层感知机模型。原创 2024-08-15 00:20:01 · 703 阅读 · 0 评论 -
8-3 语言模型
在8-2节中, 我们了解了如何将文本数据映射为词元, 以及将这些词元可以视为一系列离散的观测,例如单词或字符。 假设长度为TTT的文本序列中的词元依次为x1,x2,...xTx_{1},x_{2},...x_{T}x1,x2,...xT。 于是,xtx_{t}xt(1≤t≤T1\leq t\leq T1≤t≤T) 可以被认为是文本序列在时间步ttt处的观测或标签。在给定这样的文本序列时,语言模型(language model)的目标是估计序列的联合概率P(x1,x2,...xT)P(x_{1},原创 2024-08-13 23:08:52 · 617 阅读 · 0 评论 -
8-2 文本预处理
对于序列数据处理问题,我们在 8-1节中 评估了所需的统计工具和预测时面临的挑战。这样的数据存在许多种形式,文本是最常见例子之一。例如,。本节中,我们将解析文本的常见预处理步骤。这些步骤通常包括:将文本作为字符串加载到内存中。将字符串拆分为词元(如和建立一个词表,将拆分的词元映射到数字索引。将文本转换为数字索引序列,方便模型操作。原创 2024-08-10 16:04:37 · 708 阅读 · 0 评论 -
8-1 序列模型
想象一下有人正在看Netflix上的电影。一名忠实的用户会对每一部电影都给出评价, 毕竟一部好电影需要更多的支持和认可。然而事实证明,事情并不那么简单。随着时间的推移,人们对电影的看法会发生很大的变化。:基于其他人的意见做出评价。例如,奥斯卡颁奖后,受到关注的电影的评分会上升,尽管它还是原来那部电影。这种影响将持续几个月,直到人们忘记了这部电影曾经获得的奖项。结果表明( (Wu et al., 2017)),这种效应会使评分提高半个百分点以上。:人们迅速接受并且适应一种更好或者更坏的情况作为新的常态。原创 2024-08-10 00:23:43 · 544 阅读 · 0 评论 -
7-3 单机多卡并行
当一个模型能用单卡计算时,通常使用数据并行拓展到多卡上模型并行则用在超大模型上。原创 2024-08-08 23:37:05 · 206 阅读 · 0 评论 -
7-2 深度学习硬件:TPU和其他
TPU的内存可以做的比GPU大得多,因此一般GPU很难训练很大的模型,而TPU可以。原创 2024-08-08 00:14:09 · 204 阅读 · 0 评论 -
7-1 深度学习硬件:CPU和GPU
为cache,数据只有进入寄存器的时候,才能开始运算。(此图错误,一个矩阵应该是按。原创 2024-08-07 14:46:53 · 630 阅读 · 0 评论 -
6-8 残差网络(ResNet)
随着我们设计越来越深的网络,深刻理解“新添加的层如何提升神经网络的性能”变得至关重要。更重要的是设计网络的能力,在这种网络中,添加层会使网络更具表现力, 为了取得质的突破,我们需要一些数学基础知识。残差网络源自于一个思想——。红色点为最优值,虽然f6更复杂了,但有可能它学偏了!。原创 2024-08-06 22:24:13 · 1135 阅读 · 0 评论 -
6-7 批量规范化
训练深层神经网络是十分困难的,特别是在较短的时间内使他们收敛更加棘手。本节将介绍(Ioffe and Szegedy, 2015),这是一种流行且有效的技术,可。再结合在后面将介绍的残差块,批量规范化使得研究人员能够训练100层以上的网络。原创 2024-08-04 16:58:12 · 637 阅读 · 0 评论 -
6-6 池化层
通过逐渐聚合信息,生成越来越粗糙的映射,最终实现学习全局表示的目标,同时将卷积图层的所有优势保留在中间层。此外,当检测较底层的特征时,我们通常希望这些特征保持某种程度上的平移不变性。例如,如果我们拍摄黑白之间轮廓清晰的图像X,并将整个图像向右移动一个像素,即Z[i, j] = X[i, j + 1],则新图像Z的输出可能大不相同。而在现实中,随着拍摄角度的移动,任何物体几乎不可能发生在同一像素上。原创 2024-08-04 10:55:53 · 861 阅读 · 0 评论 -
6-5 多输入多输出通道
虽然我们在前面描述了构成每个图像的多个通道和多层卷积层。例如。但是到目前为止,我们仅展示了单个输入和单个输出通道的简化例子。这使得我们可以将输入、卷积核和输出看作二维张量。。例如,3×h×w。我们3。本节将更深入地研究具有多输入和多输出通道的卷积核。原创 2024-08-03 23:21:40 · 309 阅读 · 0 评论 -
6-4 填充和步幅
在前面的例子 图6.2.1中,输入的高度和宽度都为3,卷积核的高度和宽度都为2,生成的输出表征的维数为2×2。正如我们在 6-2节中所概括的那样,假设输入形状为nh×nw,卷积核形状为kh×kw,那么输出形状将是nh−kh1×nw−kw1。因此,。还有什么因素会影响输出的大小呢?本节我们将介绍和。原创 2024-08-02 23:33:35 · 651 阅读 · 0 评论 -
6-3 卷积层的代码实现
接下来,我们在corr2d函数中实现互相关运算过程,该函数接受输入张量X和卷积核张量K,并返回输出张量Y。通过 图6.2.1的输入张量X和卷积核张量K,我们来验证上述二维互相关运算的输出。这个函数KX。这在图像处理中用于特征提取、边缘检测等多种场景。原创 2024-08-01 16:55:04 · 573 阅读 · 0 评论 -
6-2 图像卷积
卷积解决的问题:权重随着我的输入的变大而变得特别大。原创 2024-08-01 15:08:43 · 258 阅读 · 0 评论 -
6-1 从全连接层到卷积
我们之前讨论的多层感知机十分适合处理表格数据,其中行对应样本,列对应特征。对于表格数据,我们寻找的模式可能涉及特征之间的交互,但是我们不能预先假设任何与特征交互相关的先验结构。此时,多层感知机可能是最好的选择,然而对于高维感知数据,这种缺少结构的网络可能会变得不实用。例如,在之前猫狗分类的例子中:假设我们有一个足够充分的照片数据集,数据集中是拥有标注的照片,每张照片具有百万级像素,这意味着网络的每次输入都有一百万个维度。即使将隐藏层维度降低到1000,这个全连接层也将有106×10310。原创 2024-08-01 00:29:52 · 1152 阅读 · 0 评论 -
5-2 使用和购买GPU
在表1.5.1中, 我们回顾了过去20年计算能力的快速增长。简而言之,自2000年以来,GPU性能每十年增长1000倍。本节,我们将讨论如何利用这种计算性能进行研究。首先是如何使用单个GPU,然后是如何使用多个GPU和多个服务器(具有多个GPU)。我们先看看如何使用单个NVIDIA GPU进行计算。首先,确保至少安装了一个NVIDIA GPU。然后,下载NVIDIA驱动和CUDA 并按照提示设置适当的路径。当这些准备工作完成,就可以使用nvidia-smi命令来查看显卡信息。在PyTorch中,。原创 2024-07-28 23:50:20 · 863 阅读 · 0 评论 -
5-1 PyTorch 神经网络基础
要想直观地了解块是如何工作的,最简单的方法就是自己实现一个。在实现我们自定义块之前,我们简要总结一下每个块必须提供的基本功能。将输入数据作为其前向传播函数的参数。通过前向传播函数来生成输出。请注意,输出的形状可能与输入的形状不同。例如,我们上面模型中的第一个全连接的层接收一个20维的输入,但是返回一个维度为256的输出。计算其输出关于输入的梯度,可通过其反向传播函数进行访问。通常这是自动发生的。存储和访问前向传播计算所需的参数。根据需要初始化模型参数。在下面的代码片段中,我们从零开始编写一个块。原创 2024-07-27 23:28:34 · 882 阅读 · 0 评论 -
4-4 数值稳定性 + 模型初始化和激活函数
这里的t表示层,假设ht−1是第t−1层隐藏层的输出,经过一个ft得到第t层隐藏层的输出ht。y表示x进来,第一层一直到第d层,最后到一个损失函数,就是我们预测的,要优化的目标函数。y这里不是预测,y还包括了损失函数。如果我们计算损失l关于我们某一个层权重Wt的梯度的话,损失l自顶向下求导,一直求到第t层的输出ht,再乘以第t层的输出ht关于第t层的权重Wt的导数。注意到说,这里的所有的h。原创 2024-07-26 23:00:36 · 596 阅读 · 0 评论 -
4-3 暂退法(Dropout)
同样,我们使用Fashion-MNIST数据集。我们定义具有两个隐藏层的多层感知机,每个隐藏层包含256个单元。我们可以将暂退法应用于每个隐藏层的输出(在激活函数之后), 并且可以为每一层分别设置暂退概率: 常见的技巧是在靠近输入层的地方设置较低的暂退概率。下面的模型将第一个和第二个隐藏层的暂退概率分别设置为0.2和0.5, 并且暂退法只在训练期间有效。# 这行代码定义了两个dropout率,分别为0.2和0.5。原创 2024-07-24 23:47:26 · 853 阅读 · 0 评论 -
4-2 权重衰减
前一节我们描述了过拟合的问题,本节我们将介绍一些正则化模型的技术。我们总是可以通过去收集更多的训练数据来缓解过拟合。但这可能成本很高,耗时颇多,或者完全超出我们的控制,因而在短期内不可能做到。我们继续思考多项式回归的例子,考虑高维输入可能发生的情况。多项式对多变量数据的自然扩展称为单项式(monomials), 也可以说是变量幂的乘积。单项式的阶数是幂的和。回想一下,在多项式回归的例子中, 我们可以通过调整拟合多项式的阶数来限制模型的容量。在同一训练代码实现中,不同的参数集可以有不同的更新行为。原创 2024-07-15 14:29:33 · 543 阅读 · 0 评论 -
4-1 模型选择、欠拟合和过拟合
模型容量需要匹配数据复杂度,不然很容易导致过拟合和欠拟合。原创 2024-07-14 16:49:19 · 715 阅读 · 0 评论 -
3-3 多层感知机的简洁实现
本节将介绍通过高级API更简洁地实现多层感知机。原创 2024-07-12 22:20:16 · 283 阅读 · 0 评论 -
3-2 多层感知机的从零开始实现
可以直接调用d2l包的train_ch3函数, 将迭代周期数设置为10,并将学习率设置为0.1.因为我们忽略了空间结构, 所以我们使用reshape将每个二维图像转换为一个长度为num_inputs的向量。由于我们已经从零实现过softmax函数, 因此在这里我们直接使用高级API中的内置函数来计算softmax和交叉熵损失。为了确保我们对模型的细节了如指掌, 我们将实现ReLU激活函数, 而不是直接调用内置的relu函数。因为我的模型更大了,所以我的数据拟合性更好,所以我的损失在下降。原创 2024-07-12 22:01:42 · 755 阅读 · 0 评论 -
3-1 多层感知机
多层感知机使用隐藏层和非线性激活函数来得到非线性模型多层感知机在输出层和输入层之间增加一个或多个全连接隐藏层,并通过激活函数转换隐藏层的输出。常见激活函数(一般用ReLU使用softmax来处理多类分类(和之前的softmax没什么区别,相当于就是在中间加入了隐藏层超参数为隐藏层层数和每个隐藏层的大小。原创 2024-07-12 20:35:13 · 995 阅读 · 0 评论 -
2-5 softmax 回归的简洁实现
我们发现通过深度学习框架的高级API能够使实现线性回归变得更加容易。同样,通过深度学习框架的高级API也能更方便地实现softmax回归模型。本节如在上节中一样, 继续使用Fashion-MNIST数据集,并保持批量大小为256。原创 2024-07-06 18:51:02 · 613 阅读 · 0 评论 -
2-4 Softmax 回归的从零开始实现
在实现softmax回归模型之前,我们简要回顾一下sum运算符如何沿着张量中的特定维度工作。如前所述, 给定一个矩阵XXX,我们可以对所有元素求和(默认情况下)。也可以只求同一个轴上的元素,即同一列(轴000)或同一行(轴111如果XXX是一个形状为23(2, 3)23的张量,我们对列进行求和, 则结果将是一个具有形状3(3,)3的向量。当调用sum运算符时,我们可以指定保持在原始张量的轴数,而不折叠求和的维度。这将产生一个具有形状13(1, 3)13的二维张量。原创 2024-07-06 14:14:15 · 1162 阅读 · 0 评论 -
2-3 图像分类数据集
MNIST数据集是图像分类任务中广泛使用的数据集之一,但作为基准数据集过于简单,我们将使用类似但更复杂的Fashion-MNIST数据集。原创 2024-07-05 22:10:28 · 781 阅读 · 0 评论 -
2-2 动手学深度学习v2-损失函数-笔记
损失函数,用来衡量预测值和真实值之间的区别。是机器学习里面一个非常重要的概念。三个常用的损失函数。原创 2024-02-05 20:39:30 · 956 阅读 · 0 评论 -
2-1 动手学深度学习v2-Softmax回归-笔记
Softmax回归是一个多类分类模型使用Softmax操作子得到每个类的预测置信度使用交叉熵来衡量预测和标号的区别。原创 2024-02-05 18:07:26 · 1123 阅读 · 0 评论 -
1-4 动手学深度学习v2-线性回归的简洁实现-笔记
nn是神经网络的缩写# nn 中定义了大量的定义好的层 对我们的线性回归来说 等价于它的线性层或者说全连接层net = nn.Sequential(nn.Linear(2,1)) # 唯一需要指定的是 输入的维度是多少 输出的维度是多少# 一般直接用nn.Linear就行(线性回归就是一个简单的单层神经网络),# 但是我们为了后面的方便,把它放到一个容器Sequential里面# 可以理解容器Sequential为 list of layers 我们把层按顺序 一个一个的放到一起。原创 2024-02-05 01:44:29 · 488 阅读 · 0 评论 -
1-3 动手学深度学习v2-线性回归的从零开始实现-笔记
将w随机初始化为一个均值为0,标准差为0.01的,大小为2行1列,requires_grad=True表示我们需要计算梯度# 将偏差b初始化为0,requires_grad=True表示我们需要计算梯度# 线性回归模型# 均方损失# 虽然按理来说,y_hat和y应该元素个数一样,但是可能一个是行向量,一个是列向量,这里把他们统一成一样的,# 这样就可以直接在y和y_hat之间进行元素对元素的操作了,比如计算差值或者逐元素的乘法。# 这里没有作均值 没有除以样本总数。原创 2024-02-04 23:34:17 · 1568 阅读 · 2 评论 -
1-2 动手学深度学习v2-基础优化方法-笔记
梯度下降通过不断沿着反梯度方向更新参数求解小批量随机梯度下降是深度学习默认的求解算法两个重要的超参数是批量大小和学习率。原创 2024-02-04 19:14:27 · 929 阅读 · 0 评论 -
1-1 动手学深度学习v2-线性回归-笔记
线性回归是对nnn维输入的加权,外加偏差(yXwbyXwb使用平方损失来衡量预测值和真实值的差异线性回归有显示解线性回归可以看作单层神经网络,是最简单的神经网络。原创 2024-02-04 17:23:36 · 1522 阅读 · 0 评论