Deep learning 张量(1.0).item()vs float(张量(1.0))
如果Deep learning 张量(1.0).item()vs float(张量(1.0)),deep-learning,pytorch,Deep Learning,Pytorch,如果x是一个torch.dtype torch.float的torch.Tensor,那么操作x.item()和float(x)是完全相同的吗?操作x.item()和float(x)是不同的 从item()的中,可以使用它获取作为Python编号的张量值(仅从包含单个值的张量中获取)。它基本上返回张量的值。它不会对张量做任何修改 其中asfloat()用于在可能的情况下将其输入转换为浮点数。查找文档 看到差异,考虑另一个张量Y型dIn 64: import torch y = torch.te
x
是一个torch.dtype torch.float的torch.Tensor,那么操作x.item()
和float(x)
是完全相同的吗?操作x.item()
和float(x)
是不同的
从item()的中,可以使用它获取作为Python编号的张量值(仅从包含单个值的张量中获取)。它基本上返回张量的值。它不会对张量做任何修改
其中asfloat()
用于在可能的情况下将其输入转换为浮点数。查找文档
看到差异,考虑另一个张量Y型dIn 64:
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'>
我们可以看到z
不是torch.Tensor
。它只是一个浮点数
不要将float()
操作与self.float()
混淆。这将执行张量数据类型转换(未到位,需要赋值)
z = float(y)
print('y.dtype: {}, type(z): {}'.format(y.dtype, type(z)))
>>> y.dtype: torch.int64, type(z): <class 'float'>
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