pytorch Torch Tensor([1,2,3])与 Torch Tensor([1,2,3])的区别?

h43kikqp  于 2023-01-30  发布在  其他
关注(0)|答案(1)|浏览(206)

我想了解每个函数torch.Tensor([1,2,3])torch.tensor([1,2,3])的意义。
我发现的一个区别是torch.Tensor()创建的Tensor为int64dtype,而torch.tensor()默认创建的Tensor为float32dtype,两者之间还有其他显著的区别吗?
除了我上面提到的,两者之间还有什么区别吗?还有,何时何地使用哪一个?

8wtpewkr

8wtpewkr1#

事实正好相反:)

  • torch.Tensor()返回一个可以保存32位浮点数的Tensor,因为它是torch.FloatTensor的别名。
  • torch.tensor(X)X中仅包含整数)默认返回64位整数Tensor,因为torch.tensor()自动推断数据类型。

但是初始化阶段实际上是选项之间的唯一区别。由于torch.tensor()是一个 Package 函数,用于使用预先存在的数据创建Tensor。有时建议使用torch.tensor(),因为它提供了一些可能性,例如通过设置dtype参数来指定数据类型。另一方面,要创建不带 * 数据的Tensor *,您将需要使用torch.Tensor()。无论哪种方式,在这两种情况下,您最终都会得到torch.Tensor

print(torch.Tensor([1, 2, 3]).dtype)  # torch.float32
print(torch.FloatTensor([1, 2, 3]).dtype)  # torch.float32
print(torch.tensor([1, 2, 3], dtype=torch.float32).dtype)  # torch.float32
print(torch.equal(torch.Tensor([1, 2, 3]), torch.FloatTensor([1, 2, 3])))  # True
print(torch.equal(torch.Tensor([1, 2, 3]), torch.tensor([1, 2, 3], dtype=torch.float32)))  # True

print(torch.tensor([1, 2, 3]).dtype)  # torch.int64
print(torch.LongTensor([1, 2, 3]).dtype)  # torch.int64
print(torch.equal(torch.tensor([1, 2, 3]), torch.LongTensor([1, 2, 3])))  # True

print(torch.Tensor())  # tensor([])
print(torch.tensor())  # throws an error

相关问题