
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2.1 初始化张量
张量在很多方面都很有用,除了可以作为图像的基本数据结构之外,还有一个更加突出的用途,就是可以利用张量来初始化连接神经网络不同层的权重。
在本节中,将学习初始化张量对象的不同方法。
下列代码可以从本书的GitHub存储库(https://tinyurl.com/mcvp-packt)Chapter02文件夹的Initializing_a_tensor.ipynb获得。
1.导入PyTorch并通过调用torch.tensor在列表中初始化一个张量:

2.接下来,访问张量对象的形状和数据类型:

张量内所有元素的数据类型是相同的。这就意味着如果一个张量包含不同数据类型的数据(比如布尔、整数和浮点数),那么整个张量被强制转换为一种最为通用的数据类型:

正如你在上述代码的输出中所看到的,False(布尔)和1(整数)被转换为浮点数。
或者,类似于NumPy,可以使用内置函数初始化张量对象。注意,这里画出的张量和神经网络权重之间的相似之处现在开始显现了:这里初始化张量,使它们能够表示神经网络的权重初始化。
3.生成一个张量对象,它有三行四列,填充0:

4.生成一个张量对象,它有三行四列,填充1:

5.生成值介于0和10之间(包括小值但不包括大值)的三行四列:

6.生成具有0和1之间随机数的三行四列:

7.生成数值服从正态分布的三行四列:

8.最后,可以直接使用torch.tensor(< NumPy-array>)将NumPy数组转换为Torch张量:

在学习了如何初始化张量对象的基础上,我们将在下一节学习如何在张量之上执行各种矩阵运算。