如何避免将浮点数转换为torch.float64时发生舍入
解决PyTorch张量转换时的显示舍入问题
你看到的只是PyTorch默认的打印格式化效果,转换过程并没有丢失精度——张量内部存储的数值和你输入的原浮点数完全一致。
验证存储值的准确性
直接打印张量的单个元素,就能看到完整精度的数值:
print(tensor[0]) # 输出: -0.5479744136460554 print(tensor[1]) # 输出: -0.5555555555555556
调整打印精度,让张量完整显示所有小数位
通过torch.set_printoptions()设置足够高的打印精度,就能让整个张量输出完整数值:
import torch # 设置打印精度为16位小数,覆盖默认的4位 torch.set_printoptions(precision=16) res = [-0.5479744136460554, -0.5555555555555556, -1.0] tensor = torch.tensor(res, dtype=torch.float64) print(tensor)
执行后会输出:
tensor([-0.5479744136460554, -0.5555555555555556, -1.0000000000000000], dtype=torch.float64)
补充说明
torch.float64(双精度浮点数)的精度完全足够存储你输入的这些数值,不存在转换时的精度丢失,只是默认打印时被简化显示了。
内容的提问来源于stack exchange,提问作者Ian Gallegos
相关产品推荐
相关产品推荐

