- 读数据集csv
import pandas as pd data = pd.read_csv(datafile) inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
- 处理缺失值
#1. 数值类型NaN填补平均值 inputs = inputs.fillna(inputs.mean()) #2. 将NaN视为一个类别处理数据集 inputs = pd.get_dummies(inputs, dummy_na=True)
| 未处理 | 处理数值类型缺失值 | 处理字符类型缺失值 |
|---|---|---|
- 转化为张量
import torch X, y = torch.tensor(inputs.values), torch.tensor(outputs.values) X, y2. 线性代数
| 名称 | 简介 | 例子 |
|---|---|---|
| 标量 | 仅包含一个数值 | x = torch.tensor(3.0) tensor(3.) |
| 向量 | 标量值组成的列表 | x = torch.arange(4) tensor([0, 1, 2, 3]) len(x) #4 x.shape torch.Size([4]) |
| 矩阵 | A=torch.arange(20).reshape(5, 4) A.T#矩阵的转置 | |
| 张量 | 具有任意数量轴的n维数组的通用方法,向量是一阶张量,矩阵是二阶张量 | X = torch.arange(24).reshape(2, 3, 4) |
| 降维 | 降低张量的维度,使它变为一个标量 | A.shape, A.sum()#表示任意形状张量的元素和 A.sum(axis=0)#沿0轴方向求和 A.sum(axis=[0, 1])#沿着行和列对矩阵求和,等价于对矩阵的所有元素进行求和 A.mean(), A.sum() / A.numel() #求平均值 A.sum(axis=1, keepdims=True) #非降维求和 |
| 点积 | 给定两个向量x,y∈Rd, 它们的点积(dot product)x⊤y (或⟨x,y⟩) 是相同位置的按元素乘积的和: | y = torch.ones(4, dtype = torch.float32) x, y, torch.dot(x, y) #可以通过执行按元素乘法,然后进行求和来表示两个向量的点积 torch.sum(x * y) |
| 矩阵向量积 | torch.mv(A, x) | |
| 矩阵乘法 | torch.mm(A, B) | |
| 范数 | L2范数 L1范数 LP范数 Frobenius范数 | u = torch.tensor([3.0, -4.0]) torch.norm(u) #L2范数 torch.abs(u).sum() #L1范数 torch.norm(torch.ones((4, 9))) #F范数 |
| 名称 | 概念 |
|---|---|
| 导数 | |
| 偏导数 | |
| 梯度 | |
| 链式法则 |
深度学习框架通过自动计算导数,即自动微分(automatic differentiation)来加快求导。 实际中,根据我们设计的模型,系统会构建一个计算图(computational graph)**, 来跟踪计算是哪些数据通过哪些操作组合起来产生输出。 自动微分使系统能够随后反向传播梯度。 这里,**反向传播(backpropagate)**意味着跟踪整个计算图,填充关于每个参数的偏导数。
''' 简单例子 ''' import torch x = torch.arange(4.0) x.requires_grad_(True) # 等价于x=torch.arange(4.0,requires_grad=True) x.grad # 默认值是None y = 2 * torch.dot(x, x) y.backward()#反向传播 x.grad#梯度5. 概率
| 名称 | 概念 |
|---|---|
| 联合概率 | |
| 条件概率 | |
| 贝叶斯定理 | |
| 边际化 | |
| 独立性 | 两个随机变量A和B是独立的,表述为A⊥B。 给定另一个随机变量C时,A和B是条件独立的,当且仅当 P(A,B∣C)=P(A∣C)P(B∣C),这个情况表示为A⊥B∣C。 |
| 期望 | |
| 方差 |



