3.2 Tensor的创建
在PyTorch中,创建Tensor的方法有很多,例如:用指定值创建Tensor;创建时仅指定Tensor的形状;依据另外一个Tensor的形状创建Tensor等。
1.用指定值创建Tensor
【例3.1】假设要创建一个32位浮点型的Tensor,其值是矩阵[[1,2],[3,4],[5,6]]。
![](https://epubservercos.yuewen.com/1CD67A/18002371308017606/epubprivate/OEBPS/Images/39396_46_4.jpg?sign=1739545205-odx1DEJYELQ25IXVQVdCBH6ZE13l9nLS-0-65e956ca6f99755f0d28015222b4338d)
输入:
![](https://epubservercos.yuewen.com/1CD67A/18002371308017606/epubprivate/OEBPS/Images/39396_47_1.jpg?sign=1739545205-OXMKxXmoqJ1i1BDJorBjVg8FFSfSxq3M-0-795b627c86c21b3c107f4bb88a3fc7bf)
输出:
![](https://epubservercos.yuewen.com/1CD67A/18002371308017606/epubprivate/OEBPS/Images/39396_47_2.jpg?sign=1739545205-PJGPdysxvdx0G87qmIccqtz5Q1NSo9oW-0-7593dc62b7d191091cfde4468dde41d2)
【例3.2】用size()函数或shape属性查看Tensor的尺寸;用dtype属性查看它的数据类型;用numel()函数查看它的元素个数。
输入:
![](https://epubservercos.yuewen.com/1CD67A/18002371308017606/epubprivate/OEBPS/Images/39396_47_3.jpg?sign=1739545205-6iPIhKb84E0HnH1DqIyznLR0bgTRrDCi-0-9b347bd2759401155ef8de1085f06aec)
输出:
![](https://epubservercos.yuewen.com/1CD67A/18002371308017606/epubprivate/OEBPS/Images/39396_47_4.jpg?sign=1739545205-8PJ6ALi2VmU2YIs3hDJTWH1IbtaojazA-0-27afdd1862988debb235378ca729aa0d)
可以看出:
(1)size()函数与shape属性具有相同的功能。
(2)不指定数据类型时,Tensor默认的数据类型是32位浮点型(torch.FloatTensor)。
2.创建时仅指定Tensor的形状
【例3.3】可以在创建时为Tensor直接赋值,也可以先创建一个未赋值的空Tensor。
输入:
![](https://epubservercos.yuewen.com/1CD67A/18002371308017606/epubprivate/OEBPS/Images/39396_47_5.jpg?sign=1739545205-je4bfA7441IbLTqnjqxu8T4Lz4eMR1vS-0-2bfd60415d19c4780d1cd67ea31fc02d)
输出:
![](https://epubservercos.yuewen.com/1CD67A/18002371308017606/epubprivate/OEBPS/Images/39396_47_6.jpg?sign=1739545205-dIP236TpW3TCZXUdcyLOsryTR633ljgT-0-d9c24fb8ddb13fa88d206a66b7b94c20)
系统不会马上给这个Tensor分配空间,使用时才会分配,分配空间的大小取决于内存空间的状态。
3.依据另外一个Tensor的形状创建Tensor
【例3.4】创建一个和给定的Tensor形状一样的新Tensor。
输入:
![](https://epubservercos.yuewen.com/1CD67A/18002371308017606/epubprivate/OEBPS/Images/39396_48_1.jpg?sign=1739545205-8HUloezevsGQsLY3Amxv7umnvkLHElnD-0-5d289d0d9a5561179f660cd57b57154f)
输出:
![](https://epubservercos.yuewen.com/1CD67A/18002371308017606/epubprivate/OEBPS/Images/39396_48_2.jpg?sign=1739545205-eZT65BalVT1OF4b7IdcQhIk3XR0DjJfo-0-6998017757c9b2347fe151e748fb9065)
4.其他常用的创建Tensor的方法
其他常用的创建Tensor的方法如下。
(1)torch.empty(size):返回形状为size的空Tensor。
(2)torch.zeros(size):返回形状为size、元素全部是0的Tensor。
(3)torch.zeros_like(input):返回与input相同形状的、元素全部是0的Tensor。
(4)torch.ones(size):返回形状为size、元素全部是1的Tensor。
(5)torch.ones_like(input):返回与input相同形状的、元素全部是1的Tensor。
(6)torch.rand(size):返回形状为size、元素为一组在[0,1)内满足均匀分布的随机数的Tensor。
(7)torch.randn(size):返回形状为size、元素为一组满足标准正态分布(均值为0,方差为1)的随机数的Tensor。