Last updated 3 years ago
N维数组
0d(标量)、1d(向量)、2d(矩阵)
3d(RGB图片)、4d(批量图片)、5d(批量视频)
数组操作
# 节约内存 Y = Y + X # 重新分配 Y += X # 原地计算 B = A.clone() # 内存复制
float32(建议), float64(默认)
计算图
将代码分解成操作子
将计算表示成一个DAG
自动求导的两种模式
正向累积:O(n), O(1),但每层都需要从头计算
O(n), O(1)
反向累积(反向传播,back propagation):O(n), O(n),存储正向所有层结果
O(n), O(n)
反向传播例子
反向传播
y = 2 * torch.dot(x, x) y.backward() x.grad == 4 * x
非标量反向传播
y = x * x y.sum().backward() x.grad
分离计算(用于固定网络参数)
y = x * x u = y.detach() z = u * x z.sum().backward() x.grad == u
Python 控制流(条件、循环、函数调用)