在PyTorch中,每个Tensor都有三大属性:torch.dtype、torch.device、torch.layout

1、torch.dtype 属性

https://pytorch.org/docs/stable/tensor_attributes.html#torch.dtype

2、torch.device 属性

https://pytorch.org/docs/stable/tensor_attributes.html#torch.device

我们可以获得当前使用的GPU以及名称,如下代码所示:

torch.cuda.current_device()

torch.cuda.get_device_name()

3、torch.layout 属性

torch.layout是一个表示torch内存布局的对象。目前,PyTorch支持torch.strided(密集张量)和 torch.sparse_coo(稀疏coo张量)两种类型。

torch.strided代表密集张量,是最常用的内存布局,与之相关的是跨步函数:

def stride(self, dim)

跨步是在指定维度下从一个元素跳到下一个元素所必需的跳跃。跨步是一个整数列表:第k个跨步表示在张量的第k维中从一个元素跳到下一个元素所需的内存跳跃。如下所示:

x = torch.Tensor([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
print(x.stride())

y = torch.randint(1, 5, (27,))
y = y.reshape(3, 3, 3)
print(y.stride())

输出为:

(5, 1)
(9, 3, 1)