![PyTorch计算机视觉实战:目标检测、图像处理与深度学习](https://wfqqreader-1252317822.image.myqcloud.com/cover/947/50417947/b_50417947.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2.1 初始化张量
张量在很多方面都很有用,除了可以作为图像的基本数据结构之外,还有一个更加突出的用途,就是可以利用张量来初始化连接神经网络不同层的权重。
在本节中,将学习初始化张量对象的不同方法。
下列代码可以从本书的GitHub存储库(https://tinyurl.com/mcvp-packt)Chapter02文件夹的Initializing_a_tensor.ipynb获得。
1.导入PyTorch并通过调用torch.tensor在列表中初始化一个张量:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/50_02.jpg?sign=1739595070-dA5qCxitskc8tO2pMVPSE49s2UscEEOE-0-13f831a8645dd3210046cdfd0bc5a884)
2.接下来,访问张量对象的形状和数据类型:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/50_03.jpg?sign=1739595070-HFd2a6nx1srMOqunqxCrs3LNeYu4kMU2-0-d0852d97231ca61eb428e49d1d95520e)
张量内所有元素的数据类型是相同的。这就意味着如果一个张量包含不同数据类型的数据(比如布尔、整数和浮点数),那么整个张量被强制转换为一种最为通用的数据类型:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/50_04.jpg?sign=1739595070-lW1XhZ2T2ADjkGMaDj0ROEi0vyGPLOvz-0-2d382665c6bd544af8bab0a179ee5248)
正如你在上述代码的输出中所看到的,False(布尔)和1(整数)被转换为浮点数。
或者,类似于NumPy,可以使用内置函数初始化张量对象。注意,这里画出的张量和神经网络权重之间的相似之处现在开始显现了:这里初始化张量,使它们能够表示神经网络的权重初始化。
3.生成一个张量对象,它有三行四列,填充0:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/50_05.jpg?sign=1739595070-cOj6nETU6kfC11jGwIvCGxneHNDNH9sA-0-c0d2215db4e3c1eb4a48c91f29922d04)
4.生成一个张量对象,它有三行四列,填充1:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_01.jpg?sign=1739595070-mS7LQIomIFl17inu7BXZZz4Nt7vNXtiR-0-41caf214370ee5c6deb53b400c1e68d2)
5.生成值介于0和10之间(包括小值但不包括大值)的三行四列:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_02.jpg?sign=1739595070-uJOxCpzVoIrnFuAlWI8F55yT9YWaJ8G0-0-6e3632073be264b0ba8264611f757ec4)
6.生成具有0和1之间随机数的三行四列:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_03.jpg?sign=1739595070-2wG86Z3QR3rtSM7gu3DqTHNnM5tM2tzk-0-ceeb5af14d3972325a7614e90ccf1cd9)
7.生成数值服从正态分布的三行四列:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_04.jpg?sign=1739595070-gBCGrlR8KfCnk6yDQsG7kqwIqR97Xiuv-0-01f11e7a281a0a2f29a0000a18daddc2)
8.最后,可以直接使用torch.tensor(< NumPy-array>)将NumPy数组转换为Torch张量:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_05.jpg?sign=1739595070-50ekxXvCdaoLT0FQ00spK0nTUNGF0uGI-0-f370c3c3669807aeb9db74bc9b4f041d)
在学习了如何初始化张量对象的基础上,我们将在下一节学习如何在张量之上执行各种矩阵运算。