PyTorch使用tensorboard可以显示网络运行情况,但偶尔使用SummaryWriter时遇到Segmentation fault错误。
import xxx
from torch.utils.tensorboard import SummaryWriter
import yyy
log_dir = './run_logs'
self.writer = SummaryWriter(log_dir)
报错如下(不同的路径可能具体Stack trace不同,但都是同一个问题):
Segmentation fault: 11
Stack trace:
[bt] (0) /home/user/.conda/envs/pytorch1.7/lib/python3.6/site-packages/mxnet/libmxnet.so(+0x40c6b50) [0x7f2728400b50]
[bt] (1) /lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7f285b3e6f20]
[bt] (2) /home/user/.conda/envs/pytorch1.7/lib/python3.6/site-packages/tensorflow/python/../libtensorflow_framework.so.2(scc_info_KernelDef_AttrConstraint_tensorflow_2fcore_2fframework_2fkernel_5fdef_2eproto+0) [0x7f26e0223400]
系统环境:
-------软硬件信息--------------------
电脑:thinkpad笔记本
操作系统:Ubuntu18.04系统
PyTorch版本:torch 1.7.0.dev20200626
Python版本:3.6.10
tensorflow版本:tensorflow-gpu 2.3.0
tensorboard版本:tensorboard 1.15.0
GCC版本:[GCC 7.3.0] on linux
-----------------------------------
经过查询,发现极有可能是导包(from torch.utils.tensorboard import SummaryWriter
)顺序导致的问题。
经过调整,将from torch.utils.tensorboard import SummaryWriter
顺序调前,可以顺利导包和实例化了。
import xxx
from torch.utils.tensorboard import SummaryWriter
import yyy
改为
from torch.utils.tensorboard import SummaryWriter
import xxx
import yyy
推测极有可能是某些包之间的相互冲突引发的问题,如果遇到可以暂时考虑使用这种调前导包顺序的方式解决。
参考资料:
[1] [TensorBoard] The different order of import SummaryWriter may cause Segmentation fault #30651