张量生成之后,还需要对其进行一系列的操作。才能实现我们想要的效果,因此在笔记中记录如下情况:
目录
张量显示
输出第一行向量
输出某一行向量
输出第一列向量
输出最后一列向量
输出向量中元素
张量整合
整合为一个行向量
整合为多个列向量
张量代数运算
张量显示
如果想要输出张量中某一个元素、某一个向量,那么就需要有对应的代码来实现。具体的输出方式是这样的:
输出第一行向量
如果要输出第一行向量,其基本代码是:
print(x[0])
特别注意的是,在PyTorch仍然遵循编程守则,即所有序列均从0开始。即数字0代表向量第1行。
输出某一行向量
如果要输出某一行向量,其基本代码是:
print(x[*, :])
特别要注意的是,对于某一行,那么列一定要用“:"(冒号)代替。
输出第一列向量
如果要输出张量中的第一列向量,其基本代码是:
print(x[:, 0])
输出最后一列向量
如果要输出张量中的最后一列向量,其基本代码是:
print(x[..., -1])
输出向量中元素
如果要输出张量中的某一元素,其基本代码是:
print(x[*, *])
其中,*代表所要输出的元素位置。
所有输出结果均为tensor(*)的形式,即所要输出的向量或元素内容。但下方是一个例外:
在部分情况下,由于向量中的元素有可能很大,因此在此种显示方式并不能完全显示元素的真实值,如果想要知道其确定值,就需要用到 item() 命令。具体的使用方法是:
print(x[*, *].item())
张量整合
有时因为某些需要,需要将张量中的元素做一个整合。
整合为一个行向量
首先来看一个例子:
x = torch.rand(3, 4) y = x.view(12) print(x) print(y)
那么,输出结果是这样的
tensor([[0.4809, 0.3589, 0.4435, 0.8986],
[0.0050, 0.6750, 0.6397, 0.7821],
[0.0116, 0.3274, 0.5033, 0.8286]])
tensor([0.4809, 0.3589, 0.4435, 0.8986, 0.0050, 0.6750, 0.6397, 0.7821, 0.0116,
0.3274, 0.5033, 0.8286])
上面的内容是一个3行4列的张量,下方的x.view(12)就是将其整合为1行12列的张量,也就是包含有12个元素的行向量。其中,12这个数字是所有向量的数量。如果我们不用12,看看效果是什么样的?
z = x.view(8)
Traceback (most recent call last): File "", line 1, in RuntimeError: shape '[8]' is invalid for input of size 12
可见其提示,这个向量的元素有12个,尺寸8并不符合要求。
整合为多个列向量
如果我们需要将这个向量整合为一个其他形式的向量,该怎么办?可以采取这种方法:
y = x.view(-1, 6)
这样做的结果是什么?
tensor([[0.4809, 0.3589, 0.4435, 0.8986, 0.0050, 0.6750],
[0.6397, 0.7821, 0.0116, 0.3274, 0.5033, 0.8286]])
可以看出,原有的3行4列张量变成了2行6列的张量。
张量代数运算 张量求和运算
这里仅举一个例子,即张量求和运算
y = torch.rand(5, 3) print(x + y) # 方法二 # print(torch.add(x, y)) # 方法三 #result = torch.empty(5, 3) #torch.add(x, y, out=result) #print(result)
上述求和运算的代码可根据实际情况选用。
张量元素运算如果想要对于所有元素进行操作,还需要掌握一种方法,就是
y.add_(x) print(y)
这个意思是,在y向量的基础上加上x向量。其中,x也可以替换为数字。
y.add_(1)
即所有元素均加1。
但是要注意的是,在CPU环境下,这样的加和是对整体操作而非单独元素操作。
以上就是笔记4的全部内容。本笔记除在CSDN博客上登录,同时也在本人的个人博客网站www.im-zu.cn展示,敬请访问。



