image from unsplash.com by @markusspiske
之前讨论 Tensorflow 2.0 的文章中我们介绍了其非常强大的可视化工具:Tensorboard。虽然 PyTorch 中我们可以使用非官方的 Tensorboarx 来实现相同的功能,但是我们更推荐 PyTorch 的东家 Facebook 出品的可视化工具 Visdom。这篇文章我们通过对比 Tensorboard 的形式介绍和学习 Visdom。
本文中关于数据导入和模型建立与训练部分与上一篇文章中的一致,就不在这里赘述了。
1. Tensorboard 回顾
简单来说,tensorboard 就是通过监听指定目录下的 log 文件,然后在 Web 端将 log 文件中需要监听的变量可视化出来的过程。
所以,使用 Tensorboard 大致分为以下三步:
- 创建监听目录
logdir
- 创建
summary_writer
对象写入logdir
- 将数据写入到
summary_writer
中
查看 Tensorboard 需要在终端( 或 windows cmd) 中 cd 到当前目录并输入以下命令,其中 ‘logs’ 就是我们需要监听的目录。
1 | tensorboard --logdir logs |
终端会返回一个 url,我们在浏览器中打开这个 url 即可看到 Tensorboard 了。
2. Visdom 使用简介
Visdom 同样也需要在浏览器中查看,与Tensorboard 不同,我们并不需要事先创建一个 log 目录,仅需要在终端 (或Windows CMD) 中输入如下命令,建立visdom 环境的服务器。
1 | python -m visdom.server |
终端会返回一个 url, 我们在浏览器中打开这个 url 即可看到 Visdom 的环境了。 下面我们通过与 Tensorboard 的对比学习 Vidsom 。
- Tensorboard 创建
summary_writer=tf.summary.create_file_writer(log_dir)
对象;相应的 Visdom 中创建vis = Visdom()
对象。- Tensorboard 使用
with summary_writer.as_default():
包裹tf.summary.scalar
监听 scalar 的变化;同样的,Visdom() 中使用vis.line
将监听对象的变化用 line 画出来。- Tensorboard 中
tf.summary.scalar
的参数 data 和 step 对应vis.line
中的参数 Y 和 X。- 注意 vis.line 中的 Y 和 X 接受的是一个list,我们可以在这个list 中添加多个监听对象从而实现一个坐标图中同时监听多个变量。
- Tensorboard 中使用
tf.summary.image
显示图片其shape 为[b, w, h ,c],Visdom 使用vis.images
显示图片图片shape 为[b, c, w, h],
3. 代码对比
最后我们还是在代码中对比两者的异同吧 (仅展示部分代码)
1 | # -------------------------Tensorflow with Tensorboard------------------------- |
4. 总结
Tensorboard 和 Visdom 原理类似,各有优缺点。个人感觉 Visdom 更为简洁和高效,并且图表刷新速度也比 Tensorboard 快很多。
另外,在 Tensorflow 中也可以使用 Visdom,此时仅需要将监听的对象转换成 numpy 格式即可,这部分内容请见完整的源代码。
【教程】 Tensorflow vs PyTorch —— 正则化 Dropout 与 learning rate decay
在机器学习的过程中,**过拟合((overfiting)**是一个非常常见的问题。解决过拟合有非常多的方法,比如增加样本数量,减少模型复杂度,Early Stopping 等。在无法增加样本个数...
【教程】Tensorflow vs PyTorch —— 神经网络的搭建与训练
image from unsplash.com by @wolfgang_hasselmann 上一篇文章,我们用 Tensorflow 和 PyTorch 分别完成了函数自动求导以及参数手动...