从零开始深度学习Pytorch笔记(6)——张量的数学运算
共 2118字,需浏览 5分钟
·
2020-01-20 23:20
前文传送门:
从零开始深度学习Pytorch笔记(1)——安装Pytorch
从零开始深度学习Pytorch笔记(2)——张量的创建(上)
从零开始深度学习Pytorch笔记(3)——张量的创建(下)
从零开始深度学习Pytorch笔记(4)——张量的拼接与切分
从零开始深度学习Pytorch笔记(5)——张量的索引与变换
在该系列的上一篇,我们介绍了更多Pytorch中的张量的索引与变换,本文研究张量的数学运算。
张量的加减乘除运算
使用torch.add()张量相加
torch.add(input, other, out=None)
参数:
input:张量
other:另一个张量或者数值
以下是张量加上20(对应位置都加上20)
a = torch.randn(4)
a
torch.add(a, 20)
a = torch.randn(4)
a
以下是两个张量相加
b = torch.randn(4)
b
torch.add(a, b)
使用torch.addcdiv()张量相加和相除
torch.addcdiv(input, value=1, tensor1, tensor2, out=None)
用tensor2
对tensor1
逐元素相除,然后乘以标量值value
并加到input
总之意思用公式表达为:input+value*tensor1/tensor2
t = torch.randn(1, 3)
t1 = torch.randn(3, 1)
t2 = torch.randn(1, 3)
torch.addcdiv(t, 0.1, t1, t2)
这个较为复杂,因为维度不一致也可以操作,我将它拆解出来,请看:
t = torch.randn(1, 3)
t
t1 = torch.randn(3, 1)
t1
t2 = torch.randn(3, 1)
t2
t12 = t1/t2
t12
t12*0.1
#维度不同也可以相加
t12*0.1+t
以上的操作,用torch.addcdiv()一行就可以搞定,请看:
torch.addcdiv(t, 0.1, t1, t2)
结果相同,你理解了对吧~
torch.addcmul()张量相加和相乘
addcmul(input, value=1, tensor1, tensor2, out=None)
input+value*tensor1*tensor2
类似上面的操作,只是把相除变成相乘了
t = torch.randn(1, 3)
t1 = torch.randn(3, 1)
t2 = torch.randn(1, 3)
torch.addcdiv(t, 0.1, t1, t2)
使用torch.sub()张量相减
t1 = torch.rand(2,3)
t1
t2 = torch.rand(2,3)
t2
t = torch.sub(t1, t2)
print(t)
使用torch.mul()张量相乘
t1 = torch.rand(5, 5)
t2 = torch.rand(5, 5)
t = torch.mul(t1, t2)
print(t)
使用torch.div()张量相除
t1 = torch.rand(5, 5)
t2 = torch.rand(5, 5)
t = torch.div(t1, t2)
print(t)
张量的对数,指数,幂函数运算
torch.log(input,out=None)#计算input的自然对数
torch.log10(input,out=None)#计算input的10为底的对数
torch.log2(input,out=None)#计算input的2为底的对数
torch.exp(input,out=None)#对输入input按元素求e次幂值,并返回结果张量,幂值e可以为标量也可以是和input相同大小的张量
torch.pow(input,out=None)#次方运算
其实以上的都差不多,那就举一个例子:
a = torch.randn(5)
a
torch.log(a)
张量的三角函数运算
torch.abs(input,out=None)#计算张量的每个元素绝对值
torch.acos(input,out=None)#返回一个新张量,包含输入张量每个元素的反余弦
torch.cosh(input,out=None)#返回一个新张量,包含输入input张量每个元素的双曲余弦
torch.cos(input,out=None)#返回一个新张量,包含输入input张量每个元素的余弦
torch.asin(input,out=None)#返回一个新张量,包含输入input张量每个元素的反正弦
torch.atan(input,out=None)#返回一个新张量,包含输入input张量每个元素的反正切
torch.atan2(input1, input2, out=None)#返回一个新张量,包含两个输入张量input1和input2的反正切函数
其实以上的都差不多,那就举一个例子:
a = torch.randn(5)
a
torch.cos(a)
欢迎关注公众号学习之后的深度学习连载部分~