添加TensorBoard初始化代码后日志无法正常打印如何解决
PyTorch引入SummaryWriter后日志无法打印问题解决
触发问题的代码片段如下:
from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter("./runs/tiny")
你可以按照以下步骤依次排查修复:
- 路径权限检查
确认运行代码的账户对./runs/tiny所在的上级目录有读写权限,你可以先替换为绝对路径或者当前用户目录下的路径测试,比如改为SummaryWriter("~/tb_test_runs"),如果修改后日志恢复正常,就是原路径的权限问题导致的初始化静默失败。 - 日志流冲突修复
如果你当前项目自定义了logging输出规则或者重定向了标准输出流,TensorBoard的内部日志输出会和现有规则冲突导致后续日志无法打印,你可以在初始化SummaryWriter之前加入以下代码屏蔽TensorBoard的内部日志:import logging logging.getLogger("tensorboard").setLevel(logging.ERROR) logging.getLogger("tensorflow").setLevel(logging.ERROR) - 依赖版本兼容排查
当PyTorch版本和tensorboard版本不匹配时会出现初始化后无报错但功能异常的问题,你可以运行以下命令确认版本:
建议使用PyTorch 1.13+搭配tensorboard 2.11+的组合,避免已知的版本兼容bug。pip show torch tensorboard - 多进程场景适配
如果你的代码使用了多进程训练逻辑,仅在主进程中初始化SummaryWriter即可,不要在子进程中重复初始化,多进程同时写入同一个日志目录会触发文件锁,导致整个程序的日志输出被阻塞。
内容的提问来源于stack exchange,提问作者Afsaneh Ebrahimi
相关产品推荐
相关产品推荐

