pytorch 中的 torch.Tensor() 与 torch.empty() 有什么区别?
what's the difference between torch.Tensor() vs torch.empty() in pytorch?
我试过如下。在我看来他们是一样的。 torch.Tensor() 与 pytorch 中的 torch.empty() 有什么区别?
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]])
快速回答:
torch.empty() 使用您想要的任何数据类型创建张量,torch.Tensor() 仅创建类型 torch.FloatTensor 的张量。
所以 torch.Tensor() 是 torch.empty()
的特例
详细答案:
torch.empty() returns 一个充满未初始化数据的张量。使用参数,您可以指定张量的形状、输出张量、数据类型... (see tensor.empty() documentation )
这意味着您可以创建浮点数、整数的张量...如果未指定数据类型,则选择的是默认的 torch.Tensor 类型(默认为 torch.FloatTensor,您可以使用 torch.set_default_tensor_type())
更改它
torch.Tensor() 只是 torch.empty() 的一个特例,其中数据类型为 torch.FloatTensor.
我试过如下。在我看来他们是一样的。 torch.Tensor() 与 pytorch 中的 torch.empty() 有什么区别?
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]])
快速回答: torch.empty() 使用您想要的任何数据类型创建张量,torch.Tensor() 仅创建类型 torch.FloatTensor 的张量。 所以 torch.Tensor() 是 torch.empty()
的特例详细答案:
torch.empty() returns 一个充满未初始化数据的张量。使用参数,您可以指定张量的形状、输出张量、数据类型... (see tensor.empty() documentation )
这意味着您可以创建浮点数、整数的张量...如果未指定数据类型,则选择的是默认的 torch.Tensor 类型(默认为 torch.FloatTensor,您可以使用 torch.set_default_tensor_type())
更改它torch.Tensor() 只是 torch.empty() 的一个特例,其中数据类型为 torch.FloatTensor.