pytorch&DL tutorial (LiMu)
fatecantkillme/-limu github库地址
预备知识
数据预处理
http://fatecantkillme.github.io/2025/04/24/pandas%E6%95%99%E7%A8%8B/
线性代数
标量
仅包含一个数值被称为标量(scalar)
向量
标量值组成的列表。这些标量值被称为向量的元素(element)或分量(component)
矩阵
矩阵将向量从一阶推广到二阶。矩阵,我们通常用粗体、大写字母来表 示(例如,X、Y和Z),在代码中表示为具有两个轴的张量。
张量
就像向量是标量的推广,矩阵是向量的推广一样,我们可以构建具有更多轴的数据结构。张量(本小节中的 “张量”指代数对象)是描述具有任意数量轴的n维数组的通用方法
降维
1 | sum(axis=,keepdims=) |
axis:0降行的维度1降列的维度
keepdims:是否保留维度不变
点积
1 | torch.dot(x,y) |
矩阵乘法
torch.mm(x,y)
范数
欧几里德距离
torch.norm(u)
$L_1$范数:
torch.abs(x).sum()
自动微分
pytorch会自动生成计算图,再根据计算图反向计算导数
基本上只需要调用loss.backward(),系统就会自动计算导数并且记录到x.grad
分离计算
有时候希望将某些变量视作常数而不是其他变量计算的产物即想剪枝计算图,此时可以使用detach()产生一个新的变量与原变量拥有相同的值但是不保留计算图,这样梯度就不会向后流
其原理在于链式定理中如果把某变量单纯视作常数就不会计算它关于变量的导数了
线性神经网络
线性回归
线性假设是指目标(房屋价格)可以表示为特征(面积和房龄)的加权和
权重决定了每个特征对我们预测值的影响。b称为偏置(bias)、 偏移量(offset)或截距(intercept)。偏置是指当所有特征都取值为0时,预测值应该为多少
损失函数:
损失函数(loss function) 能够量化目标的实际值与预测值之间的差距
线性回归刚好是一个很简单的优化问题。与我们将在本书中所讲到的其他大部分模型不同,线性回归的解可 以用一个公式简单地表达出来,这类解叫作解析解(analytical solution)
随机梯度下降
梯度下降最简单的用法是计算损失函数(数据集中所有样本的损失均值)关于模型参数的导数(在这里也可 以称为梯度)。但实际中的执行可能会非常慢:因为在每一次更新参数之前,我们必须遍历整个数据集。因此, 我们通常会在每次需要计算更新的时候随机抽取一小批样本,这种变体叫做小批量随机梯度下降(minibatch stochastic gradient descent)。
**|B|表示每个小批量中的样本数,这也称为批量大小(batch size)。η表示学习率(learning rate)。批量 大小和学习率的值通常是手动预先指定,而不是通过模型训练得到的。**这些可以调整但不在训练过程中更新 的参数称为超参数(hyperparameter)。调参(hyperparameter tuning)是选择超参数的过程。
矢量化加速
将变量矢量化后计算速度比一个一个元素历遍计算快的多
softmax回归
分类问题
一般分类问题与类别之间的自然顺序无关
表示分类数据的简单方法:独热编码
softmax回归也是一个单层神经网络且是全连接层
softmax函数能够将未规范化的预测变换为非负数并且总和为1,同时让模型保持可导的性质
我们首先对每个未规范化的预测求幂,这样可以确保输出非负。为了确保最终输出的概率值总和为1, 我们再让每个求幂后的结果除以它们的总和
对数似然
pytorch&DL tutorial (LiMu)