1.逐元素操作
这部分操作会对tensor的每一个元素(element-wise)进行操作,此类操作的输入与输出形状一致。
- abs/sqrt/div/exp/fmod/log/pow 绝对值/平方根/除法/指数/求余/求幂
- cos/sin/asin/atan2/cosh 三角函数
- ceil/round/floor/trunc 上取整/四舍五入/下取整/只保留整数部分
- clamp(input,min,max) 超过min和max的部分进行阶段
- sigmoid/tanh 激活函数
对于很多操作,如div、mul、pow、fmod等,PyTorch都实现了运算符重载,所以可以直接使用运算符。如a**2等价于torch.pow(a,2),等价于torch.mul(a,2)
2.归并操作
此类操作会使输出形状小于输入形状,并可以沿着某一维度进行指定操作。如加法sum,既可以计算整个tensor的和,也可以计算tensor中每一行或每一列的和。
- mean/sum/median/mode 均值/和/中位数/众数
- norm/dist 范数/距离
- std/var 标准差/方差
- cumsum/cumprod 累加/累乘
以上大多数函数都有一个参数dim,用来指定这些操作是在哪个维度上执行的。
假设输入的形状是(m,n,k):
- 如果指定dim=0,输出的形状就是(1,n,k)或者(n,k);
- 如果指定dim=1,输出的形状就是(m,1,k)或者(m,k);
- 如果指定dim=2,输出的形状就是(m,n,1)或者(m,n)。
size中是否有1,取决于参数keepdim,keepdim=True会保留维度1,keepdim默认为False。
3.比较
比较函数中有一些是逐元素比较,操作类似于逐元素操作,还有一些则类似于归并操作。
- gt/lt/ge/le/eq/ne 大于/小于/大于等于/小于等于/等于/不等于
- topk 最大的k个数
- sort 排序
- max/min 比较两个tensor的最大值和最小值
如max()函数:
- t.max(tensor):返回tensor中最大的一个数。
- t.max(tensor,dim):指定维度上最大的数,返回tensor和下标。
- t.max(tensor1,tensor2):比较两个tesor相比最大的元素。
4.线性代数
PyTorch的线性函数主要封装了Blas和Lapack,其用法和接口都与之类似。
- trace 对角线元素之和(矩阵的迹)
- diag 对角线元素
- triu/tril 矩阵的上三角/下三角,可指定偏移量
- mm/bmm 矩阵乘法,batch的矩阵乘法
- addmm/addbmm/addmv 矩阵运算
- t 转置
- dot/cross 内积/外积
- inverse 求逆运算
- svd 奇异值分解
注意:矩阵的 转置会导致存储空间不连续,需调用它的.contiguous方法将其转为连续。