浅谈torch.utils.tensorboard跟tensorboardX
1. 前言
相信有一部分小伙伴在使用PyTorch时跟我一样,PyTorch可用的数据可视化工具TensorBoard有两种可用的方法,torch.utils.tensorboard和tensorboardX,他们之前到底有什么区别跟联系?为什么官方有TensoBoard的接口,还会有tensorboardX的存在呢?
这个小问题也困惑了我很久,不过我入门PyTorch比较晚,一直用的也都是官方的api,而不是tensorboardX,不过也相应地遇到过一些问题。今天就简单地聊下他们之间的缘分。
2. 分析
2.1 tensorboardX
先说tensorboardX吧。在PyTorch刚发布的那段时间,是不支持tensorboard这样强大的数据可视化工具的。没有方便易用的数据可视化多难受呀,需要自己写复杂的代码来实现,这就很麻烦,而别人却能用着tensorboard这样方便的可视化工具。于是乎,在这样难受的处境下,lanpa大佬(Github用户名)就开发了tensorboardX,一个完全支持PyTorch的tensorboard工具包,从而让PyTorch很好地调用tensorboard的数据可视化工具来监控神经网络训练的过程。
其实,tensorboardX的的使用与官方的tensorboard的使用并无差异,唯一的不同就是要在导入时用tensorboardX替代tensorboard (代码如下),只是tensorboardX就是为PyTorch精心打造的,解决了PyTorch早期在数据可视化功能上的不足。
# 官方tensorboard导入
from tensorboard import SummaryWriter
# tensorboardX导入
from tensorboardX import SummaryWriter
GitHub链接:lanpa/tensorboardX
2.2 torch.utils.tensorboard
PyTorch官方对tensorboard的支持是在PyTorch 1.1.0版本中实现的,具体的更新内容可看Official TensorBoard Support, Attributes, Dicts, Lists and User-defined types in JIT / TorchScript, Improved Distributed。tensorboard功能强大,用户多,这么好用,比visdom要强大一点,不如就合作一下吧。
torch.utils.tensorboard是PyTorch官方对tensorboard支持的接口,使用方面上也和官方的tensorboard没什么区别 (也基本仅在导入上不同),不过唯一要注意的就是要使用torch.utils.tensorboard必须在环境中安装官方的tensorboard的包 (即pip install tensorboard)。
导入方式:
from torch.utils.tensorboard import SummaryWriter
3. 结束语
总的来说,tensorboardX跟torch.utils.tensorboard在使用上是基本一样的,区别可能仅在于一个是大佬开发的,一个是PyTorch官方与TensoBoard合作的。
tensorboardX我没用过,是否与TensorFlow在同一环境下兼容我不太清楚,不过torch.utils.tensorboard就可能会有不兼容的问题 (在同一环境下同时有TensorFlow,PyTorch可能会导致torch.utils.tensorboard不可用,具体问题和相应的解决方法可阅读我之前的文章:AttributeError: module ‘tensorflow_core._api.v2.io.gfile’ has no attribute ‘get_filesystem’)。
就在上面这一点上,可能tensorboardX是第三方不依赖于TensorFlow的会有优势吧,不过我还是会倾向于torch.utils.tensorboard,因为它是官方与TensorBoard合作的,会随版本持续更新吧,具体使用见仁见智吧。