3.2 Tensor的创建
在PyTorch中,创建Tensor的方法有很多,例如:用指定值创建Tensor;创建时仅指定Tensor的形状;依据另外一个Tensor的形状创建Tensor等。
1.用指定值创建Tensor
【例3.1】假设要创建一个32位浮点型的Tensor,其值是矩阵[[1,2],[3,4],[5,6]]。

输入:

输出:

【例3.2】用size()函数或shape属性查看Tensor的尺寸;用dtype属性查看它的数据类型;用numel()函数查看它的元素个数。
输入:

输出:

可以看出:
(1)size()函数与shape属性具有相同的功能。
(2)不指定数据类型时,Tensor默认的数据类型是32位浮点型(torch.FloatTensor)。
2.创建时仅指定Tensor的形状
【例3.3】可以在创建时为Tensor直接赋值,也可以先创建一个未赋值的空Tensor。
输入:

输出:

系统不会马上给这个Tensor分配空间,使用时才会分配,分配空间的大小取决于内存空间的状态。
3.依据另外一个Tensor的形状创建Tensor
【例3.4】创建一个和给定的Tensor形状一样的新Tensor。
输入:

输出:

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。