我想了解每个函数torch.Tensor([1,2,3])和torch.tensor([1,2,3])的意义。我发现的一个区别是torch.Tensor()创建的Tensor为int64dtype,而torch.tensor()默认创建的Tensor为float32dtype,两者之间还有其他显著的区别吗?除了我上面提到的,两者之间还有什么区别吗?还有,何时何地使用哪一个?
torch.Tensor([1,2,3])
torch.tensor([1,2,3])
torch.Tensor()
torch.tensor()
8wtpewkr1#
事实正好相反:)
torch.FloatTensor
torch.tensor(X)
X
但是初始化阶段实际上是选项之间的唯一区别。由于torch.tensor()是一个 Package 函数,用于使用预先存在的数据创建Tensor。有时建议使用torch.tensor(),因为它提供了一些可能性,例如通过设置dtype参数来指定数据类型。另一方面,要创建不带 * 数据的Tensor *,您将需要使用torch.Tensor()。无论哪种方式,在这两种情况下,您最终都会得到torch.Tensor。
Tensor
dtype
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
1条答案
按热度按时间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
。