gpt4 book ai didi

deep-learning - 张量(1.0).item()与 float (张量(1.0))

转载 作者:行者123 更新时间:2023-12-04 04:02:47 26 4
gpt4 key购买 nike

如果 x 是 dtype torch.float 的 torch.Tensor 那么操作 x.item()float(x)完全一样?

最佳答案

操作x.item()float(x) 是不一样的。

来自documentation在 item() 中,它可用于将张量的值作为 Python 数字获取(仅来自包含单个值的张量)。它基本上按原样返回张量的值。它不会对张量进行任何修改。

float() 是为了在可能的情况下将其输入转换为 float 。查找文档 here .

要查看差异,请考虑 dtype int64 的另一个张量 y:

import torch

y = torch.tensor(2)
print(y, y.dtype)
>>> tensor(2) torch.int64

print('y.item(): {}, float(y): {}'.format(y.item(), float(y)))
>>> y.item(): 2, float(y): 2.0

print(type(y.item()), type(float(y)))
>>> <class 'int'> <class 'float'>

请注意,float(y) 不会就地转换类型。如果您需要更改,则需要分配它。喜欢:

z = float(y)
print('y.dtype: {}, type(z): {}'.format(y.dtype, type(z)))
>>> y.dtype: torch.int64, type(z): <class 'float'>

我们可以看到 z 不是 torch.Tensor。它只是一个 float 。

不要将 float() 操作与 self.float() 混淆。这operation执行 Tensor dtype 转换(不是就地,需要分配)。

print('y.float(): {},\n y.float().dtype: {},\n y: {},\n y.dtype'.format(y.float(), y.float().dtype, y, y.dtype))

y.float(): 2.0,
y.float().dtype: torch.float32,
y: 2,
y.dtype: torch.int64

关于deep-learning - 张量(1.0).item()与 float (张量(1.0)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62833711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com