![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=1739303893-6dHCMLUo2dHl9MmWftVXueOIGwBolAKN-0-c0129d9da07bf1446c05589cd7e48467)
2.接下来,访问张量对象的形状和数据类型:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/50_03.jpg?sign=1739303893-2hOavORp2ULSfsLpIzmBj8uvKrzM0fWf-0-c4a43bd333714c75968ccf928d50d337)
张量内所有元素的数据类型是相同的。这就意味着如果一个张量包含不同数据类型的数据(比如布尔、整数和浮点数),那么整个张量被强制转换为一种最为通用的数据类型:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/50_04.jpg?sign=1739303893-TcO5WkmyBBNK4ka80kDIyL1UPUixMYgj-0-8818fbae31d8566441fbe1da09ff1db1)
正如你在上述代码的输出中所看到的,False(布尔)和1(整数)被转换为浮点数。
或者,类似于NumPy,可以使用内置函数初始化张量对象。注意,这里画出的张量和神经网络权重之间的相似之处现在开始显现了:这里初始化张量,使它们能够表示神经网络的权重初始化。
3.生成一个张量对象,它有三行四列,填充0:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/50_05.jpg?sign=1739303893-V631klupmMbIuqpJUEkvdYrKJY3Z0eni-0-95b725cfc91a617d6da3f437791ddbf9)
4.生成一个张量对象,它有三行四列,填充1:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_01.jpg?sign=1739303893-KUHucD3XAxeqWcwd8lsW6FWL0TVYpR0D-0-2dc8d1e307dbaaf8106522a404abb932)
5.生成值介于0和10之间(包括小值但不包括大值)的三行四列:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_02.jpg?sign=1739303893-7sjM6ae4GN5wbeZCH2rpw132jIjpXQMt-0-8d7c1c081a631d251295f1fdcc54223e)
6.生成具有0和1之间随机数的三行四列:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_03.jpg?sign=1739303893-WNyKXO55y1AIuMDhgSF7lzkSOiQUVIxM-0-d2448d1ba16d4dfdd5456d672ccf9c5c)
7.生成数值服从正态分布的三行四列:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_04.jpg?sign=1739303893-6gtlUpJ0YB9GwMU8WNCDoir3RVQ3krHq-0-7a34f29db9dcf83d2443d2f3cab87da3)
8.最后,可以直接使用torch.tensor(< NumPy-array>)将NumPy数组转换为Torch张量:
![](https://epubservercos.yuewen.com/37D997/29686491107405206/epubprivate/OEBPS/Images/51_05.jpg?sign=1739303893-rZealxPKn2GNGTgfmETRnq9HEDes8nmC-0-aba2ab40ae299cac9c7a0767d1bdc86d)
在学习了如何初始化张量对象的基础上,我们将在下一节学习如何在张量之上执行各种矩阵运算。