本节继续来讲pytorch的入门级操作,加加减减、拍平拉直的操作。
4.张量的四则运算
在操作张量的的时候,肯定少不了张量之间的加减乘除。二维世界的张量就是矩阵,是不是像我们学数学那样直接用(+,-,*,/)直接操作就好了呢???
x = torch.tensor([[1,2],[3,4]])
y = torch.ones(2,2)
x+y # 对应元素相加
x-y # 对应元素相减
x*y # 对应元素相乘
x/y # 对应元素相除
可以看到如果直接使用四则运算符进行操作,得到的结果都是对应元素的基本操作。
其实,对应元素的操作,还可以使用一些函数进行完成。例如add_(),add()
等。
# x.add_(y) # 此句会报错
x.dtype,y.dtype # (torch.int64, torch.float32)
# 重新改变下数据,把x改成float32类型的
x = torch.tensor([[1,2],[3,4]],dtype=torch.float32)
y = torch.ones(2,2)
# inplace的方式,操作完成后,结果会赋值给前一个操作数
x.add_(y) # x会变成x+y
x.t_() # x转置,只能转置2维或者2维以下的张量
下面是 add()、mul()
加法、乘法操作。可以看到都是对应元素的操作。
torch.add(x,y) # 对应元素相加
torch.mul(x,y) # 对应元素相乘
这里add_()
和add()
的区别是,前者是变量直接调用的函数,即x
可以直接点出来的函数,但是后者是torch
包里才有的函数。而且前者操作完,就直接赋值给调用的变量了。
那么,我平时学的矩阵的乘法呢???它来了它来了。。。
torch.mm(x,y) # 矩阵乘法