pytorch中的torch.Tensor()和torch.empty()有什么区别?

nkh*_*uyu 5 python torch pytorch tensor

我已经尝试了如下。在我看来,它们是相同的。pytorch中的torch.Tensor()和torch.empty()有什么区别?

在此处输入图片说明

kma*_*o23 6

torch.Tensor()torch.FloatTensor()dtype张量构造期间未指定no时只是张量的默认类型的别名

numpy用户火炬记录中可以看出,这似乎torch.Tensor()对numpy用户的直接替代。numpy.empty()

因此,本质上torch.FloatTensor()torch.empty()返回填充dtype垃圾值的张量的工作相同torch.float32。下面是一个小批量:

In [87]: torch.FloatTensor(2, 3)
Out[87]: 
tensor([[-1.0049e+08,  4.5688e-41, -8.9389e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])

In [88]: torch.FloatTensor(2, 3)
Out[88]: 
tensor([[-1.0049e+08,  4.5688e-41, -1.6512e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])
Run Code Online (Sandbox Code Playgroud)
In [89]: torch.empty(2, 3)
Out[89]: 
tensor([[-1.0049e+08,  4.5688e-41, -9.0400e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])

In [90]: torch.empty(2, 3)
Out[90]: 
tensor([[-1.0049e+08,  4.5688e-41, -9.2852e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是误导性的导师 https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html 为“torch.empty”打印零,这是不正确的。 (3认同)

HLe*_*Leb 5

快速回答: torch.empty() 创建具有您想要的任何数据类型的张量,torch.Tensor() 只创建 torch.FloatTensor 类型的张量。所以 torch.Tensor() 是 torch.empty() 的一个特例

详细解答:

torch.empty() 返回一个充满未初始化数据的张量。使用参数,您可以指定张量的形状、输出张量、数据类型... (请参阅tensor.empty()文档)

这意味着您可以创建浮点数、整数的张量...如果未指定数据类型,则选择的数据类型是您的默认torch.Tensor类型(默认情况下为 torch.FloatTensor,您可以使用torch.set_default_tensor_type()更改它)

torch.Tensor() 只是 torch.empty() 的一个特例,其中数据类型为 torch.FloatTensor。