深度之眼 PyTorch 训练营第 4 期(12):TensorBoard

TensorBoard 是 TensorFlow 的神经网络可视化工具,被 PyTorch 拿来了。

1. TensorBoard 安装

TensorBoard 的安装有个坑,直接安装以后是不能用的,必须再安装 furtue 模块。我从来都没有遇到这个问题,因为我直接安装了 TensorFlow…

2. 创建 TensorBoard 文件的接口

想使用 TensorBoard,必须在硬盘上先创建一个 TensorBoard 数据文件,然后访问这个文件来查看 TensorBoard。创建 TensorBoard 文件的类是 torch.utils.SummaryWriter

  • torch.utils.tensorboard.writer.SummaryWriter(log_dir=None, comment='', purge_step=None, max_queue=10, flush_secs=120, filename_suffix='')
    这个类常用的变量有三个:
  • log_dir:如果这个变量没有被指定,默认将数据文件保存在根目录下的 runs/CURRENT_DATETIME_HOSTNAME 文件夹下。
  • commentlog_dir 文件的后缀。如果 log_dir 被提供了,这个变量无效。
  • filename_suffix:数据文件名的后缀。
    想使用这个类的时候,先把这个类实例化,然后使用 add_... 方法添加需要记录的数据,使用完毕后再使用 .close() 方法关闭这个实例。官方网站上有详细的用例,这里仅介绍与 NLP 有关的两个功能:添加标量和直方图。

3. 添加标量 add_scalaradd_scalars

  • add_scalar(tag, scalar_value, global_step=None, walltime=None)

add_scalar 用来添加一个标量的数据,tag 为这张图的标题,scalar_value 为需要记录的数据点,global_step 为 x 轴的单位。

  • add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None)

add_scalars 可以添加一组标量的数据。main_tag 为这张图的标题,tag_scalar_dict 为记录数据点的字典(键为数据点的名称,值为数据点的值),global_step 为 x 轴的单位。

举个简单的例子:

writer = SummaryWriter()

for i in range(1000):
    writer.add_scalars(main_tag='lines', tag_scalar_dict={'x1': i, 'x2': -i}, global_step=i)
writer.close()

显示效果如下:
深度之眼 PyTorch 训练营第 4 期(12):TensorBoard_第1张图片

4 添加直方图

  • add_histogram(tag, values, global_step=None, bins='tensorflow', walltime=None, max_bins=None)

同上面的 add_scalaradd_scalars 的参数类似,唯一的不同在于多了一个设置统计区间的参数 bins,我们用默认值 tensorflow 即可。

再来一个例子:

for i in range(2):
    data_rand = torch.randn(1000)

    writer.add_histogram('random distribution', data_rand, i)

writer.close()

效果为
深度之眼 PyTorch 训练营第 4 期(12):TensorBoard_第2张图片
TensorBoard 还有其它很多强大的功能,但与 nlp 关系不大,这里不再多赘述了。

你可能感兴趣的:(Python,deep,learning,PyTorch)