?
Pytorch中定义了一个Tensor类来实现张量,Tensor在使用上与numpy的ndarray类似,不同的是,Tensor可以在GPU上运行,但是numpy只能在CPU上运行,当然numpy与Tensor可以进行相互转换,以此使得numpy数据在GPU上运行。Pytorch中的Tensor又包括CPU上的数据类型和GPU上的数据类型,两种数据类型之间也可以进行相互转换。
在 PyTorch 中可以通过三种方式创建张量:
- 通过调用Tensor类的构造函数。
- 通过将 NumPy 数组或 Python 列表转换为张量。
- 通过PyTorch提供的接口为您创建具有特定数据的张量。例如,您可以使用
torch.zeros() 函数创建一个填充零值的张量。
通过调用Tensor类的构造函数
- 通过传递Python 可迭代的数据(例如,列表(list)或元组(tuple)),它将用作新创建的张量的相应元素的取值。张量的类型由list或者tuple元素的类型决定
举例说明:
>>> n = np.zeros(shape=(3, 2))
>>> n
array([[ 0., 0.],
[ 0., 0.],
[ 0., 0.]])
>>> b = torch.tensor(n)
>>> b
tensor([[ 0., 0.],
[ 0., 0.],
[ 0., 0.]], dtype=torch.float64)
- 在张量的类型这篇博文里面,我们介绍了不通的张量类型所使用的类,例如32位的浮点型tensor使用torch.FloatTensor类,64位的双进度使用torch.DoubleTensor类。我们可以通过不同的类型的Tensor的类来构造不通的Tensor对象。
举例说明:
>>> torch.FloatTensor([[1,2,3],[3,2,1]])
tensor([[ 1., 2., 3.],
[ 3., 2., 1.]])
- torch.tensor 默认的数据类型是32位浮点型,但是可以通过torch.set_default_tensor_type(t)设置默认的tensor类型
举例说明:
>>> torch.tensor([1.2, 3]).dtype
torch.float32
>>> torch.set_default_tensor_type(torch.DoubleTensor)
>>> torch.tensor([1.2, 3]).dtype
torch.float64
通过将 NumPy 数组或 Python 列表转换为张量
在这种情况下,类型将从NumPy数组或者Python列表的类型中获取。 举例说明,我们使用 NumPy 创建了相同的元素取值为0的张量:
|