张量生成之后,还需要对其进行一系列的操作。才能实现我们想要的效果,因此在笔记中记录如下情况:
目录
张量显示
输出第一行向量
输出某一行向量
输出第一列向量
输出最后一列向量
输出向量中元素
张量整合
整合为一个行向量
整合为多个列向量
张量代数运算
如果想要输出张量中某一个元素、某一个向量,那么就需要有对应的代码来实现。具体的输出方式是这样的:
如果要输出第一行向量,其基本代码是:
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展示,敬请访问。