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