从零开始深度学习Pytorch笔记(6)——张量的数学运算

浏览: 3414

前文传送门:

从零开始深度学习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)

tensor2tensor1逐元素相除,然后乘以标量值value 并加到input

总之意思用公式表达为:input+value*tensor1/tensor2

t = torch.randn(13)
t1 = torch.randn(31)
t2 = torch.randn(13)
torch.addcdiv(t, 0.1, t1, t2)

这个较为复杂,因为维度不一致也可以操作,我将它拆解出来,请看:

t = torch.randn(13)
t

t1 = torch.randn(31)
t1

t2 = torch.randn(31)
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(13)
t1 = torch.randn(31)
t2 = torch.randn(13)
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(55)
t2 = torch.rand(55)
t = torch.mul(t1, t2)
print(t)

使用torch.div()张量相除

t1 = torch.rand(55)
t2 = torch.rand(55)
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)

torch.cos(a)

欢迎关注公众号学习之后的深度学习连载部分~

image.png

推荐 0
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册