PyTorch学习笔记(4):张量的操作(1)

张量生成之后,还需要对其进行一系列的操作。才能实现我们想要的效果,因此在笔记中记录如下情况:

目录

张量显示

输出第一行向量

输出某一行向量

输出第一列向量

输出最后一列向量

输出向量中元素

张量整合

整合为一个行向量

整合为多个列向量

张量代数运算


张量显示

如果想要输出张量中某一个元素、某一个向量,那么就需要有对应的代码来实现。具体的输出方式是这样的:

输出第一行向量

如果要输出第一行向量,其基本代码是:

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展示,敬请访问。

你可能感兴趣的:(Pytorch学习笔记,pytorch,深度学习,python)