动手学深度学习
文章平均质量分 71
主要跟随李牧学习深度学习基础知识
菜鸡不叫
研究生阶段学习人工智能,写一些自己的理解,希望可以帮助到大家
展开
-
Anaconda Prompt 怎样切换环境,工作路径,以及怎样修改默认环境和默认路径
在win环境下安装的Anaconda,打开其提供的Anaconda Prompt窗口,默认环境为base,默认路径是你的用户名,如下图:conda activate env_name 可以切换环境E: 切换到你的指定目录的盘符cd 切换到你指定路径下,即可成功: 同样是Anaconda Prompt属性页的快捷方式栏的起始位置处,更改成你想默认打开的路径即可原创 2023-03-08 21:30:19 · 10613 阅读 · 1 评论 -
矩阵求导,自动求导
矩阵对标量求导(Matrix-by-scalar) 如果 Y 是一个矩阵,x 是一个标量,那么 Y 对 x 的导数是一个与 Y 维度相同的矩阵,其中每个元素是 Y 中对应元素对 x 的导数。标量对矩阵求导(Scalar-by-matrix) 如果 y 是一个标量,X 是一个矩阵,那么 y 对 X 的导数是一个与 X 维度相同的矩阵,其中每个元素是 y 对 X 中对应元素的导数。y.sum().backward() x.grad # 等价于y.backward(torch.ones(len(x)))原创 2023-09-14 19:50:36 · 108 阅读 · 1 评论 -
权重衰减-Dropout
然而也有一些例外:一些研究人员在测试时使用暂退法,用于估计神经网络预测的“不确定性”: 如果通过许多不同的暂退法遮盖后得到的预测结果都是一致的,那么我们可以说网络发挥更稳定。比如在 图4.6.1中,删除了h2和h5, 因此输出的计算不再依赖于h2或h5,并且它们各自的梯度在执行反向传播时也会消失。现在,如果我们的权重向量增长的太大,我们的学习算法可能会更集中于最小化权重范数。这项技术通过函数与零的距离来衡量函数的复杂度,因为在所有函数f中,函数 f = 0(所有 输入都得到值0)在某种意义上是最简单的。原创 2023-10-08 19:56:35 · 111 阅读 · 1 评论 -
线性回归
定义模型,将模型的输入和参数同模型的输出关联起来或者并初始化参数或在每一步中,使用从数据集中随机抽取的一个小批量,然后根据参数计算损失的梯度。接下来,朝着减少损失的方向更新我们的参数。下面的函数实现小批量随机梯度下降更新。该函数接受模型参数集合、学习速率和批量大小作为输入。每 一步更新的大小由学习速率lr决定。因为我们计算的损失是一个批量样本的总和,所以我们用批量大小(batch_size) 来规范化步长,这样步长大小就不会取决于我们对批量大小的选择或。原创 2023-09-15 10:33:08 · 41 阅读 · 0 评论 -
数值稳定性---梯度消失and梯度爆炸
sigmoid导数最大的时候也只有0.25,其余时候远小于0.25,因此如果每层的激活函数都为Logistic函数的话,很容易导致梯度消失问题,Tanh函数的导数峰值是1那也仅仅在取值为0的时候,其余时候都是小于1,因此通过链式求导之后,Tanh函数也很容易导致梯度消失。糟糕选择可能会导致我们在训练时遇到梯度爆炸或梯度消失。 从relu的函数特性我们知道,在小于0的时候梯度为0,大于0的时候梯度恒为1,那么此时就不会再存在梯度消失和梯度爆炸的问题了,因为每层的网络得到的梯度更新速度都一样。原创 2023-10-10 17:06:02 · 82 阅读 · 1 评论 -
模型选择,欠拟合以及过拟合
泛化误差(generalization error)是指,模型应用在同样从原始样本的分布中抽取的无限多数据样本时,模型误差的期望。训练误差(training error)是指,模型在训练数据集上计算得到的误差。合适的拟合程度:泛化能力强,训练样本集准确率高,测试样本集准确率高。欠拟合:泛化能力差,训练样本集准确率低,测试样本集准确率低。过拟合:泛化能力差,训练样本集准确率高,测试样本集准确率低。功 能:指数函数(x的y次方)参数还未收敛就停止循环。原创 2023-10-08 17:54:05 · 94 阅读 · 1 评论 -
自定义块,加载和存储模型参数
在实现自定义块之前,简要总结一下每个块必须提供的基本功能。将输入数据作为其前向传播函数的参数。通过前向传播函数来生成输出。请注意,输出的形状可能与输入的形状不同。例如,模型中的第一个全连接的层接收一个20维的输入,但是返回一个维度为256的输出。计算其输出关于输入的梯度,可通过其反向传播函数进行访问。通常这是自动发生的。存储和访问前向传播计算所需的参数。根据需要初始化模型参数。# 用模型参数声明层。这里,我们声明两个全连接的层# 调用MLP的父类Module的构造函数来执行必要的初始化。原创 2023-10-18 19:37:07 · 35 阅读 · 1 评论 -
数据预处理,线代
用向量表示物品(如单词、产品或新闻文章),以便最小化相似项目之间的距离,最大化不同项目之间 的距离。注意,A的列维数(沿轴1的长度)必须与x的维数(其长度)相同。A.sum(axis=[0,1,2])=A.sum()#在轴0,1,2上求和。按行列求和---A.sum(axis=0),B.sum(axis=1)L1范数---orch.abs(u).sum()#绝对值和。L2范数---torch.norm(u)#根下平方值和。,或许是深度学习算法最重要的组成部分(除了数据),#取字典中最大值的键。原创 2023-09-14 15:00:58 · 60 阅读 · 1 评论 -
softmax 和 交叉熵损失函数
为了解决分类问题原创 2023-09-24 21:21:28 · 55 阅读 · 1 评论 -
pytorch的基础函数
makedirs---用法和语法同mkdir. 区别在于makedirs()可以创建多级目录,而mkdir()只能创建一级目录,具体图下。切片---第一个元素的索引是0,最后一个元素索引是‐1;read_csv---csv文件读取。arange---产生顺序数列。numel---访问元素数量。reshape---改变形状。tensor---形成自编辑。id()---形成初始地址。shape---访问形状。zeros---形成全零。randn---形成随机。ones---形成全一。原创 2023-09-13 23:08:33 · 41 阅读 · 0 评论 -
多层感知机
Fashion‐MNIST中的每个图像由 28 × 28 = 784个灰度像素值组成。所有图像共分为10个类别。忽略像素之间的空间结构,我们可以将每个图像视为具有784个输入特征和10个类的简单分类数据集。线性到非线性:在仿射变换之后对每个隐藏单元应用非线性的激活函数(activation function)σ。因为内存在硬件中的分配和寻址方式,这么做往往可以在计 算上更高效。 经典激活函数:ReLU ,sigmoid ,tanh。原创 2023-10-08 17:51:34 · 33 阅读 · 1 评论