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

时间:2018-07-02 04:14:16

标签: python pytorch torch tensor

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

enter image description here

2 个答案:

答案 0 :(得分:5)

torch.Tensor() is just an alias to torch.FloatTensor()是张量的默认类型,当在张量构建期间未指定dtype时。

torch for numpy users notes看来,torch.Tensor()可以替代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]])

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]])

答案 1 :(得分:0)

快速解答: torch.empty()创建具有所需任何数据类型的张量,torch.Tensor()仅创建类型为torch.FloatTensor的张量。 所以torch.Tensor()是torch.empty()的特例

详细答案:

torch.empty()返回一个包含未初始化数据的张量。使用参数可以指定张量的形状,输出张量,数据类型... (see tensor.empty() documentation )

这意味着您可以创建一个浮点型张量,可以将int ...如果未指定数据类型,则所选的是您的默认 torch.Tensor 类型(默认为torch.FloatTensor,您可以使用torch.set_default_tensor_type()

进行更改

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