PyTorch基础
pytorch
PyTorch是一个python库,它主要提供了两个高级功能:
GPU加速的张量计算
构建在反向自动求导系统上的深度神经网络
数据类型
数据类型: torch.float32, torch.float64, torch.float16, torch.uint8, torch.int8, torch.int16, torch.int32, torch.int64
创建Tensor方法:ones, zeros, eye, arange, linspace, rand, randn, normal, uniform, randperm
定义数据
1 | x = torch.tensor(666) |
定义操作
凡是用Tensor进行各种运算的,都是Function
- 基本运算,加减乘除,求幂求余
函数 | 功能 |
---|---|
abs/sqrt/div/exp/fmod/log/pow | 绝对值/平方根/除法/指数/求余/求幂 |
cos/sin/asin/atan2 ··· | 三角函数 |
ceil/round/floor/trunc | 上取整/四舍五入/下取整/只保留整数 |
clamp(input, min, max) | 超过min和max截断 |
mean/sum/mode | 均值/和/众数 |
norm/dist | 范数/距离 |
std/var | 标准差/方差 |
cumsum/cumprod | 累加/累乘 |
- 布尔运算,大于小于,最大最小
函数 | 功能 |
---|---|
gt/lt/ge/le/eq/ne | 大于/小于/大于等于/小于等于/等于/不等 |
topk | 最大的k个数 |
sort | 排序 |
max/min | 比较两个tensor最大最小值 |
- 线性运算,矩阵乘法,求模,求行列式
函数 | 功能 |
---|---|
trace | 对角线元素之和(矩阵的迹) |
diag | 对角线元素 |
triu/tril | 矩阵的上三角/下三角,可指定偏移 |
mm/bmm | 矩阵乘法,batch的矩阵乘法 |
addmm/addbmm/addmv/addr/badbmm | 矩阵运算 |
t | 转置 |
dot/cross | 内积/外积 |
inverse | 求逆矩阵 |
svd | 奇异值分解 |
1 | # 创建一个 2x4 的tensor |
张量
反向传播
PyTorch里并没有显式的Graph定义,计算步骤,存在Tensor的grad_fn里,沿着Tensor的grad_fn往后走,就是反向传播
计算图
对于上述过程,公式如下:
所以:
所以: