如何将CNN模型评估的多元素FloatTensor输出打印为两位小数?
解决PyTorch多元素FloatTensor打印为两位小数的问题
我来帮你搞定这个打印格式化的问题!你遇到的情况是因为默认的张量打印逻辑会对极小值用科学计数法,而且单独设置精度或者用普通字符串格式化都没法直接适配张量的多元素场景。下面给你两个可行的解决方案:
方法一:全局设置张量打印选项(推荐)
只需要调整torch.set_printoptions的两个参数,就能完美实现你想要的效果:
precision=2:设置小数点后保留两位suppress=True:强制关闭科学计数法,让极小值显示为0.00而不是1.68e-07
代码示例:
import torch # 模拟你的预测结果张量 prediction = torch.exp(torch.tensor([[-0.75, -16.0, -0.33]])) # 对应你例子中的2.84e-01、1.68e-07、7.16e-01 # 设置打印选项 torch.set_printoptions(precision=2, suppress=True) print(prediction)
运行后输出(旧版PyTorch会显示Variable containing:):
tensor([[0.28, 0.00, 0.72]])
方法二:局部格式化输出(不修改全局设置)
如果你不想改变全局的打印规则,可以单独对这个张量进行元素级格式化:
import torch prediction = torch.exp(torch.tensor([[-0.75, -16.0, -0.33]])) # 把张量展平后逐个格式化,再拼接成你想要的格式 formatted_vals = ["%.2f" % val for val in prediction.flatten()] print(f"Variable containing: {' '.join(formatted_vals)} [torch.FloatTensor of size 1x3]")
输出结果:
Variable containing: 0.28 0.00 0.72 [torch.FloatTensor of size 1x3]
为什么你之前的尝试没生效?
print("%.2f" % prediction):这个字符串格式化语法只能处理单个数值,而prediction是一个张量对象,无法直接适配多元素场景,会抛出类型错误或者输出不符合预期的结果。torch.set_printoptions(precision=2):单独设置精度后,极小值(比如1.68e-07)还是会以科学计数法显示为0.00e+00,加上suppress=True才能让它显示为0.00。
内容的提问来源于stack exchange,提问作者user8188120
相关产品推荐
相关产品推荐

