介绍
torch.set_printoptions(),这个函数是 PyTorch 中用于自定义张量(Tensor)打印格式 的核心工具,能帮你控制张量打印时的精度、显示长度、格式等,让输出更符合阅读或调试需求。
作用
PyTorch 张量 默认打印格式:可能存在精度不足、数值显示不直观(如科学计数法)、长张量被截断等问题。
该函数用于全局设置 PyTorch 张量的打印规则,设置后整个程序中所有张量的打印输出都会遵循这些规则,直到你重新修改或重启解释器。
语法
torch.set_printoptions()
`
常用参数
| 参数名 | 作用 | 示例/默认值 |
|---|---|---|
precision |
控制打印的小数位数 | 默认4位,如 precision=2 会显示两位小数 |
sci_mode |
是否启用科学计数法 | 默认True(自动启用),False强制关闭 |
threshold |
张量元素数量阈值,超过则截断显示 | 默认1000,如threshold=5,超过5个元素会用...省略 |
edgeitems |
截断时,开头/结尾显示的元素数 | 默认3,如长张量会显示前3+后3个元素 |
linewidth |
每行打印的字符数,超过则换行 | 默认80,可调整避免一行过长 |
profile |
快速套用预设配置(’default’/‘short’/‘full’) | profile='full' 会显示完整张量,不截断 |
例子
import torch
# 1. 生成测试张量
# 生成10个均值0、方差1的标准正态分布张量
tensor = torch.randn(10)
print("默认打印格式:")
print(tensor)
print("-" * 50)
# 2. 自定义打印配置:关闭科学计数法+保留2位小数+显示完整张量
torch.set_printoptions(
precision=2, # 保留2位小数
sci_mode=False, # 关闭科学计数法
threshold=float('inf'), # 不截断(显示所有元素)
linewidth=100 # 每行字符数放宽,避免换行
)
print("自定义格式后:")
print(tensor)
print("-" * 50)
# 3. 测试长张量的截断控制
long_tensor = torch.randn(20) # 20个元素的张量
# 恢复默认配置,再设置截断参数
torch.set_printoptions(threshold=5, edgeitems=2) # 阈值5,只显示前2+后2个元素
print("长张量截断显示:")
print(long_tensor)
print("-" * 50)
# 4. 快速套用预设配置(full显示完整张量)
torch.set_printoptions(profile='full', sci_mode=False)
print("预设full配置(显示完整长张量):")
print(long_tensor)
输出结果(参考):
默认打印格式:
tensor([ 0.4567, -1.2345, 0.7890, -0.1234, 0.9876, -0.5432, 0.3210, -0.8765,
0.6543, -0.4321])
--------------------------------------------------
自定义格式后:
tensor([ 0.46, -1.23, 0.79, -0.12, 0.99, -0.54, 0.32, -0.88, 0.65, -0.43])
--------------------------------------------------
长张量截断显示:
tensor([ 0.12, 0.34, ..., -0.78, -0.90])
--------------------------------------------------
预设full配置(显示完整长张量):
tensor([ 0.12, 0.34, 0.56, -0.78, -0.90, 0.23, -0.45, 0.67, -0.89, 0.10, -0.32, 0.54, -0.76, 0.98, -0.11, 0.33, -0.55, 0.77, -0.99, 0.22])
恢复默认配置
如果想重置为 PyTorch 原生的默认打印格式,只需调用无参数的函数:
torch.set_printoptions() # 恢复所有参数为默认值
使用场景
- 直观验证数值是否符合预期:用
precision控制小数位数,sci_mode=False关闭科学计数法,能直观验证数值是否符合预期; - 查看长张量完整内容:设置
threshold=float('inf')或profile='full',避免关键元素被截断; - 统一输出格式:在项目开头设置一次,确保所有张量打印格式一致,便于阅读和对比。
总结
torch.set_printoptions()是全局控制张量打印格式的工具,核心解决“显示精度、科学计数法、张量截断”问题;- 常用组合:
precision(小数位数)+sci_mode=False(关闭科学计数法)+threshold(控制截断); - 调试“均值0、方差1”的张量时,关闭科学计数法+调整精度能让数值更易读,是最实用的配置组合。