- PyTorch计算机视觉实战:目标检测、图像处理与深度学习
- (印)V·基肖尔·阿耶德瓦拉等
- 531字
- 2024-06-06 18:06:14
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=1739258714-JyZLDQ9t6bSpboPrzF3R0IHByZQZhnmK-0-25d2d528d4ab5078ed7bdba95dcfd57f)
2.接下来,访问张量对象的形状和数据类型:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/50_03.jpg?sign=1739258714-4UqPFlqciIZ3n1oNgNyRHxqa5TgDO5ny-0-ff599f91f7d54d51b256632535db9292)
张量内所有元素的数据类型是相同的。这就意味着如果一个张量包含不同数据类型的数据(比如布尔、整数和浮点数),那么整个张量被强制转换为一种最为通用的数据类型:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/50_04.jpg?sign=1739258714-BAbi1ZsCYzbcJSgBox06tan2mpXnToxd-0-1e91aaadbf35659d906df8e8aae59339)
正如你在上述代码的输出中所看到的,False(布尔)和1(整数)被转换为浮点数。
或者,类似于NumPy,可以使用内置函数初始化张量对象。注意,这里画出的张量和神经网络权重之间的相似之处现在开始显现了:这里初始化张量,使它们能够表示神经网络的权重初始化。
3.生成一个张量对象,它有三行四列,填充0:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/50_05.jpg?sign=1739258714-5acNRci3azQPfdSoTnwSDBMtYROy8F0E-0-ec22d03788bd3ff7cf1e79acec17c163)
4.生成一个张量对象,它有三行四列,填充1:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_01.jpg?sign=1739258714-cdQ9pfK1CQLcx3cYUCjih6DGuL2vPAcm-0-64f9942f6778c86c0a90ffc0ce7b69f1)
5.生成值介于0和10之间(包括小值但不包括大值)的三行四列:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_02.jpg?sign=1739258714-GDfafQ9AKsTZJM3ZYvh5gkUydmFvZVl5-0-e8e339489effacc2984586520b9b75c7)
6.生成具有0和1之间随机数的三行四列:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_03.jpg?sign=1739258714-WfrFUIWRZXwutvyNoWddSePtjR5AdCoY-0-1258e137af2785964218952d59a832b1)
7.生成数值服从正态分布的三行四列:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_04.jpg?sign=1739258714-95PKSowGAhAJU6pwUXrVBV8HzTIAQx9L-0-263e6020e09e4eb118c179132c0884fa)
8.最后,可以直接使用torch.tensor(< NumPy-array>)将NumPy数组转换为Torch张量:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_05.jpg?sign=1739258714-NS7wui0kdhkRgFpJ8A50prteHfdTMXs8-0-38821e0f1637b41d21aa7dc907737298)
在学习了如何初始化张量对象的基础上,我们将在下一节学习如何在张量之上执行各种矩阵运算。