- 博客(27)
- 收藏
- 关注
原创 李沐 丢弃法代码实现【动手学深度学习v2】
中引入的Fashion-MNIST数据集。我们[定义具有两个隐藏层的多层感知机,每个隐藏层包含256个单元我们可以将暂退法应用于每个隐藏层的输出(在激活函数之后),并且可以为每一层分别设置暂退概率: 常见的技巧是在靠近输入层的地方设置较低的暂退概率。下面的模型将第一个和第二个隐藏层的暂退概率分别设置为0.2和0.5, 并且暂退法只在训练期间有效。
2024-10-25 01:04:53
272
原创 李沐 权重衰退【动手学深度学习v2】
权重衰退通过 L2 正则项使得模型参数不会过大,从而控制模型复杂度正则项权重是控制模型复杂度的超参数w_%7Bi%7Dww_%7Bi%7Dwlwll。
2024-10-24 00:46:07
759
原创 李沐 过拟合和欠拟合【动手学深度学习v2】
模型容量需要匹配数据复杂度,否则可能导致欠拟合和过拟合统计机器学习提供数学工具来衡量模型复杂度实际中一般靠观察训练误差和验证误差。
2024-09-20 20:42:52
337
原创 李沐 多层感知机的从零开始实现【动手学深度学习v2】
为了与之前softmax回归 获得的结果进行比较, 继续使用Fashion-MNIST图像分类数据集。
2024-09-18 15:18:41
364
原创 李沐 多层感知机【动手学深度学习v2】
同或操作:相同为1,不同为0。先进入蓝色和黄色分类器,最后进入灰色分类器来得到最终的结果。输入为x1~x4,加入隐藏层后,x1~x4需要先进入h1~h5,该隐藏层再作为输入,连接下一层。输入和输出的个数都是由数据决定的,但是隐藏层的大小可以自己设置。❀ n是输入层的个数。m是隐藏层的神经元个数。❀ 隐藏层的输入是m*n,输出是m*1;由于这是一个单分类,输出层的输入是m,输出是1 。❀ 是一个长为m的向量,作为输入进入到输出层。❀ 函数一定要是非线性函数,如果是线性函数,那么输出也是线 性的,等价于单层感知
2024-09-18 14:42:52
233
原创 李沐 感知机【动手学深度学习v2】
最简单的深度网络称为多层感知机。多层感知机由多层神经元组成,每一层与它的上一层相连,从中接收输入;同时每一层也与它的下一层相连,影响当前层的神经元。当我们训练容量较大的模型时,我们面临着*过拟合*的风险。因此,本章将从基本的概念介绍开始讲起,包括*过拟合*、*欠拟合*和模型选择。为了解决这些问题,本章将介绍*权重衰减*和*暂退法*等正则化技术。我们还将讨论数值稳定性和参数初始化相关的问题,这些问题是成功训练深度网络的关键。在本章的最后,我们将把所介绍的内容应用到一个真实的案例:房价预测。关于
2024-09-13 21:33:13
429
原创 李沐 softmax回归的简洁实现【动手学深度学习v2】
通过深度学习框架的高级API能更方便地实现softmax回归模型。本节同 :numref:,继续使用Fashion-MNIST数据集,并保持批量大小为256。softmax回归的输出层是一个全连接层, 因此,为了实现我们的模型, 我们只需在中添加一个带有10个输出的全连接层。 同样,在这里并不是必要的, 但它是实现深度模型的基础。 我们仍然以均值0和标准差0.01随机初始化权重。: PyTorch不会隐式地调整输入的形状。因此,在线性层前定义了展平层(flatten)来调整网络输入的形状。:这是一个全连接层
2024-09-12 21:52:08
1029
原创 李沐 softmax回归的从零开始实现【动手学深度学习v2】
在实现softmax回归模型之前,先简要回顾一下sum运算符如何沿着张量中的特定维度工作。给定一个矩阵X,我们可以对所有元素求和], 也可以只求同一个轴上的元素,即同一列(轴0)或同一行(轴1)。如果X是一个形状为(2,3)的张量,我们对列进行求和, 则结果将是一个具有形状(3,)的向量。当调用sum运算符时,我们可以指定保持在原始张量的轴数,而不折叠求和的维度。这将产生一个具有形状(1, 3)的二维张量。0是对列求和,得到一个行向量;1是对行求和,得到一个列向量。实现softmax的三个步骤:对。
2024-09-11 22:52:33
1143
原创 李沐 图片分类数据集【动手学深度学习v2】
Fashion-MNIST中包含的10个类别,分别为t-shirt(T恤)、trouser(裤子)、pullover(套衫)、dress(连衣裙)、coat(外套)、sandal(凉鞋)、shirt(衬衫)、sneaker(运动鞋)、bag(包)和ankle boot(短靴)。Fashion-MNIST由10个类别的图像组成,每个类别由训练数据集(train dataset)中的6000张图像 和测试数据集(test dataset)中的1000张图像组成。一般来说,要让读取数据的速度大于训练数据的速度。
2024-09-09 20:54:42
398
1
原创 李沐 损失函数【动手学深度学习v2】
梯度下降时,沿负梯度方向更新参数,导数决定如何更新参数。y'(预测值)与y相差较大时,梯度较大,对参数更新的幅度较大。当越靠近原点,梯度的绝对值越来越小,对参数更新的幅度也越来越小。当预测值和真实值的差的绝对值小于等于1时,是平方误差。:梯度,当y'>0时,导数为1,y'<0时,导数为-1。当预测值和真实值的差的绝对值大于1时,是绝对值误差。:表示损失函数的梯度,一次函数,且穿过原点。:二次函数,y为0时,关于y'的函数。:二次函数,y为0时,关于y'的函数。:高斯分布,似然函数,1^(-l)
2024-06-25 21:37:11
225
原创 李沐 Softmax 回归 【动手学深度学习v2】
分类问题我们从一个图像分类问题开始。 假设每次输入是一个2×2的灰度图像。 我们可以用一个标量表示每个像素值,每个图像对应四个特征𝑥1,𝑥2,𝑥3,𝑥4。此外,假设每个图像属于类别“猫”“鸡”和“狗”中的一个。接下来,我们要选择如何表示标签。我们有两个明显的选择:最直接的想法是选择𝑦∈{1,2,3}, 其中整数分别代表狗猫鸡{狗,猫,鸡}。 这是在计算机上存储此类信息的有效方法。 如果类别间有一些自然顺序, 比如说我们试图预测婴儿儿童青少年青年人中年人老年人{婴儿,儿童,青少年,青年
2024-05-18 21:48:10
723
原创 李沐 线性回归的简洁实现 【动手学深度学习v2】
对于标准深度学习模型,我们可以使用框架的预定义好的层。这使我们只需关注使用哪些层来构造模型,而不必关注层的实现细节。我们首先定义一个模型变量net,它是一个Sequential类的实例。Sequential类将多个层串联在一起。当给定输入数据时,Sequential实例将数据传入到第一层, 然后将第一层的输出作为第二层的输入,以此类推。线性回归就是一个简单的单层的神经网络,因此实际上不需要Sequential。但是由于以后几乎所有的模型都是多层的,在这里使用Sequential会让你熟悉。
2024-05-17 23:19:39
920
1
原创 李沐 线性回归的从0开始实现【动手学深度学习v2】
接下来,我们必须[定义模型,将模型的输入和参数同模型的输出关联起来。计算线性模型的输出——计算输入特征𝑋和模型权重𝑤的矩阵-向量乘法后加上偏置𝑏。注意,上面的Xw是一个向量,而𝑏是一个标量。根据广播机制: 当一个向量加一个标量时,标量会被加到向量的每个分量上。
2024-05-17 21:41:46
956
1
原创 李沐 基础优化算法【动手学深度学习v2】
基础优化算法中最常见的算法为 梯度下降。不断更新w0,使其接近最优解。更新法则为等于上一时刻减去(标量,学习率)与损失函数关于的梯度的乘积。初始时t=1,表示从w0到w1的向量,再与w0相加,就得到了w1的位置。同样,接下来t=2,从w1的位置开始,先计算梯度,再走一步得到w2的位置……学习率为超参数,是需要人为指定的值。不能太小:步长有限,步数较多,计算梯度的成本较高。不能太大:导致一直在震荡,并没有真正地下降。梯度的计算复杂度,与样本的个数线性相关在训练我们的模型时,我们经常希望能够同时处理整个小批量的
2024-05-08 11:24:50
220
原创 李沐 线性回归 【动手学深度学习v2】
线性模型可以看做是单层神经网络,是最简单的一种神经网络其中,1/2是为了在求导时方便消去。假设xi(即小x)为列向量,再经过转置,则X(即大X)的每一行就是一个样本。同样,y为列向量,每一行的yi是实数的数值。对于模型,在每一个数据上的损失,求均值,可得到损失函数。公式如下:与X,y,w,b有关其中,1/2来自损失函数,1/n表示求平均。针对每一个样本,用真实值yi减去预测值(<xi,w>+b),也可写成向量版本,再求平方和。目标为找到w和b使得平方中的项的值最小,即最小化损失!w*和b*就是我们的解。解释
2024-05-08 11:08:08
135
原创 李沐 自动求导实现【动手学深度学习v2】
中所说,求导是几乎所有深度学习优化算法的关键步骤。虽然求导的计算很简单,只需要一些基本的微积分。但对于复杂的模型,手工进行更新是一件很痛苦的事情(而且经常容易出错)。深度学习框架通过自动计算导数,即自动微分来加快求导。实际中,根据设计好的模型,系统会构建一个计算图, 来跟踪计算是哪些数据通过哪些操作组合起来产生输出。自动微分使系统能够随后反向传播梯度。这里,反向传播意味着跟踪整个计算图,填充关于每个参数的偏导数。
2024-05-07 21:51:09
739
原创 李沐 数据预处理【动手学深度学习v2】
sec_pandas为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始, 而不是从那些准备好的张量格式数据开始。在Python中常用的数据分析工具中,我们通常使用pandas软件包。像庞大的Python生态系统中的许多其他扩展包一样,pandas可以与张量兼容。本节我们将简要介绍使用pandas预处理原始数据,并将原始数据转换为张量格式的步骤。后面的章节将介绍更多的数据预处理技术。
2024-05-06 22:03:54
431
原创 李沐 数据操作实现【动手学深度学习v2】
这个新的张量包含与转换前相同的值,但是它被看成一个3行4列的矩阵。注意,通过改变张量的形状,张量的大小不会改变。对于将两个数组作为输入的函数,按元素运算将二元运算符应用于两个数组中的每对位置对应的元素。在下面的例子中,我们使用逗号来表示一个具有5个元素的元组,其中每个元素都是按元素操作的结果。虽然我们讨论的是矩阵的索引,但这也适用于向量和超过2个维度的张量。在上面的例子中,为了获得一个3行的矩阵,我们手动指定了它有3行和4列。在上面的部分中,我们看到了如何在相同形状的两个张量上执行按元素操作。
2024-05-06 21:35:54
1017
原创 李沐 数据操作【动手学深度学习v2】
区间为左闭右开,子区域取1,2两行,1:指取1列及向后的所有列。·每个元素的数据类型:例如32位浮点数。·每个元素的值,例如全是0,或者随机数。·形状:例如3x4矩阵。从0行开始,3行一跳。从0列开始,2列一跳。
2024-04-29 11:24:07
122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人