张量的广播与numpy中的广播类似,存在以下两种情况:
a = torch.zeros(12).reshape(3,4)
b = torch.ones(3).reshape(3,1)
c = torch.ones(3).reshape(1,3)
d = torch.ones(8).reshape(2,4)
a + b
a + c
b + c
同时将张量b 的列和c 的行复制3次都变成3行3列的2维张量再进行计算。
a +d
记一下下面这2张表即可:
函数 | 描述 |
---|---|
torch.add(t1,t2 ) | t1、t2两个张量逐个元素相加,等效于t1+t2 |
torch.subtract(t1,t2) | t1、t2两个张量逐个元素相减,等效于t1-t2 |
torch.multiply(t1,t2) | t1、t2两个张量逐个元素相乘,等效于t1*t2 |
torch.divide(t1,t2) | t1、t2两个张量逐个元素相除,等效于t1/t2 |
torch.abs(t) | 返回绝对值 |
torch.ceil(t) | 向上取整 |
torch.floor(t) | 向下取整 |
torch.round(t) | 四舍五入取整 |
torch.neg(t) | 返回相反数 |
还有一些常见数学公式的计算
数学运算函数 | 数学公式 | 描述 |
---|---|---|
torch.exp(t) | = | 返回以e为底、t中元素为幂的张量 |
torch.expm1(t) | = - 1 | 对张量中的所有元素计算exp(x) - 1 |
torch.exp2(t) | =2 | 逐个元素计算2的t次方。 |
torch.pow(t,n) | out=exponent | 返回t的n次幂 |
torch.sqrt(t) | out=input⎯⎯⎯⎯⎯⎯⎯⎯⎯√ | 返回t的平方根 |
torch.square(t) | out=2 | 返回输入的元素平方。 |
torch.log10(t) | =log10() | 返回以10为底的t的对数 |
torch.log(t) | =log() | 返回以e为底的t的对数 |
torch.log2(t) | =log2() | 返回以2为底的t的对数 |
torch.log1p(t) | =log( + 1) | 返回一个加自然对数的输入数组。 |
torch.sin(t) | 三角正弦。 | |
torch.cos(t) | 元素余弦。 | |
torch.tan(t) | 逐元素计算切线。 |
函数 | 描述 |
---|---|
torch.mean(t) | 返回张量均值 |
torch.var(t) | 返回张量方差 |
torch.std(t) | 返回张量标准差 |
torch.var_mean(t) | 返回张量方差和均值 |
torch.std_mean(t) | 返回张量标准差和均值 |
torch.max(t) | 返回张量最大值 |
torch.argmax(t) | 返回张量最大值索引 |
torch.min(t) | 返回张量最小值 |
torch.argmin(t) | 返回张量最小值索引 |
torch.median(t) | 返回张量中位数 |
torch.sum(t) | 返回张量求和结果 |
torch.logsumexp(t) | 返回张量各元素求和结果,适用于数据量较小的情况 |
torch.prod(t) | 返回张量累乘结果 |
torch.dist(t1, t2) | 计算两个张量的闵式距离,可使用不同范式 |
torch.topk(t) | 返回t中最大的k个值对应的指标 |
函数 | 描述 |
---|---|
torch.eq(t1, t2) | 比较t1、t2各元素是否相等,等效== |
torch.equal(t1, t2) | 判断两个张量是否是相同的张量 |
torch.gt(t1, t2) | 比较t1各元素是否大于t2各元素,等效> |
torch.lt(t1, t2) | 比较t1各元素是否小于t2各元素,等效< |
torch.ge(t1, t2) | 比较t1各元素是否大于或等于t2各元素,等效>= |
torch.le(t1, t2) | 比较t1各元素是否小于等于t2各元素,等效<= |
torch.ne(t1, t2) | 比较t1、t2各元素是否不相同,等效!= |