pytorch
import torch
x = torch.arange(12)
x.shape
x.numel() #张量中元素总数
x.reshape(3,4)
torch.zeros((2,3,4))
torch.ones((2,3,4))
torch.randn(3,4) #每个元素从均值为0、标准差为1的标准高斯分布(正态分布)中随机采样
torch.cat((X,Y),dim=0) #按行连结两个矩阵
torch.cat((X,Y),dim=1) #按列连结两个矩阵
#如果后续计算没有重复使用X,使用下列操作之一可以减少内存的开销
X[:] = X + Y
X += Y
#转换为其他python对象
A = X.numpy()
B = torch.tensor(A)
a = torch.tensor([1])
a.item()
float(a)
int(a)
数据预处理
import pandas as pd
data.fillna(data.mean()) #以均值来填充缺失值
data = pd.get_dummies(data, dummy_na=True) #将类别值或离散值的列转换为多列
#转换为张量形式
线性代数
B = A.clone() # 通过分配新内存,将A的⼀个副本分配给B
A.sum(axis=0) #按列求和
A.sum(axis=1) #按行求和
A.mean(axis=0), A.sum(axis=0) / A.shape[0]
A.sum(axis=1, keepdims=True) #非降维求和
A.cumsum(axis=0)
torch.dot(x,y) #点积
torch.mv(A, x) #矩阵-向量积
torch.mm(A, B) #矩阵-矩阵乘法
范数
向量范数是将向量映射到标量的函数 f f f。对于任意向量,其范数满足以下性质:
- 如果我们按常数因子
α
\alpha
α缩放向量的所有元素,其范数会按相同常数因子的绝对值缩放:
f ( α x ) = ∣ α ∣ f ( x ) f(\alpha \mathbf{x}) = |\alpha|f(\mathbf{x}) f(αx)=∣α∣f(x) - 三角不等式
f ( x + y ) ≤ f ( x ) + f ( y ) f(\mathbf{x}+\mathbf{y})\leq f(\mathbf{x})+f(\mathbf{y}) f(x+y)≤f(x)+f(y) - 非负性
f ( x ) ≥ 0 f(\mathbf{x})\geq 0 f(x)≥0 - 范数为0当且仅当向量全由0组成
∀ i , [ x ] i = 0 ⇔ f ( x ) = 0 \forall i,[\mathbf{x}]_i=0\Leftrightarrow f(\mathbf{x})=0 ∀i,[x]i=0⇔f(x)=0
L
1
L_1
L1范数
∥
x
∥
1
=
∑
i
=
1
n
∣
x
i
∣
\|\mathbf{x}\|_1=\sum_{i=1}^n|x_i|
∥x∥1=i=1∑n∣xi∣
torch.abs(x).sum()
L
2
L_2
L2范数
∥
x
∥
2
=
∑
i
=
1
n
x
i
2
\|\mathbf{x}\|_2=\sqrt{\sum_{i=1}^nx_i^2}
∥x∥2=i=1∑nxi2
torch.norm(x)
L
p
L_p
Lp范数
∥
x
∥
p
=
(
∑
i
=
1
n
∣
x
i
∣
p
)
1
/
p
\|\mathbf{x}\|_p=(\sum_{i=1}^n|x_i|^p)^{1/p}
∥x∥p=(i=1∑n∣xi∣p)1/p
矩阵
X
∈
R
m
×
n
\mathbf{X}\in\R^{m\times n}
X∈Rm×n的
F
r
o
b
e
n
i
u
s
Frobenius
Frobenius范数是矩阵元素平方和的平方根
∥
X
∥
p
=
(
∑
i
=
1
n
∣
x
i
∣
p
)
1
/
p
\|\mathbf{X}\|_p=(\sum_{i=1}^n|x_i|^p)^{1/p}
∥X∥p=(i=1∑n∣xi∣p)1/p
梯度
假设 x x x是 n n n维向量,在微分多元函数时经常使用以下规则:
- 对于所有 A ∈ R m × n A\in\R^{m\times n} A∈Rm×n,都有 ∇ x A x = A T \nabla_xAx=A^T ∇xAx=AT
- 对于所有 A ∈ R n × m A\in\R^{n\times m} A∈Rn×m,都有 ∇ x x T A = A \nabla_xx^TA=A ∇xxTA=A
- 对于所有 A ∈ R n × m A\in\R^{n\times m} A∈Rn×m,都有 ∇ x x T A x = ( A + A T ) x \nabla_xx^TAx=(A+A^T)x ∇xxTAx=(A+AT)x
-
∇
x
∥
x
∥
2
=
∇
x
x
T
x
=
2
x
\nabla_x\|x\|^2=\nabla_xx^Tx=2x
∇x∥x∥2=∇xxTx=2x
同样,对于矩阵 X X X,有 ∇ x ∥ X ∥ F 2 = 2 X \nabla_x\|X\|_F^2=2X ∇x∥X∥F2=2X。