引入模块

from torch.utils.tensorboard import SummaryWriter

创建SummaryWriter对象

  1. def __init__(self, log_dir=None, comment='', purge_step=None, max_queue=10,
  2. flush_secs=120, filename_suffix=''):

参数说明

  1. log_dir:tensorboard文件存放目录,默认会在当前目录生成runs目录作为文件存放目录;
  2. comment:可以看做是文件后缀名的后缀,设置了log_dir的话,该参数没用

其余参数目前没用过

官方给出的示例:

from torch.utils.tensorboard import SummaryWriter

create a summary writer with automatically generated folder name.

writer = SummaryWriter()

folder location: runs/May04_22-14-54_s-MacBook-Pro.local/

create a summary writer using the specified folder name.

writer = SummaryWriter(“my_experiment”)

folder location: my_experiment

create a summary writer with comment appended.

writer = SummaryWriter(comment=”LR_0.1_BATCH_16”)

folder location: runs/May04_22-14-54_s-MacBook-Pro.localLR_0.1_BATCH_16/

add_scalar

API定义

add_scalar(tag, scalar_value, global_step=None, walltime=None, new_style=False, double_precision=False)

用于向直方图中添加数据

参数说明

  1. tag:直方图的唯一标识,如果使用了斜线,那么就会有相应的层级关系;一般到两层;如Train/Loss、Train/Acc 和 Test/Loss、Test/Acc
  2. scalar_value:直方图中点的值,可以看成是纵坐标y;
  3. global_step:可以看成是横坐标x;

后面两个参数目前没用过

官方给出示例:

from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter() x = range(100) for i in x: writer.add_scalar(‘y=2x’, i * 2, i) writer.close()

image.png

add_scalars

API定义

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

用于在同一个直方图中绘制多个图像;

参数说明

  1. main_tag:同add_scalar的tag
  2. tag_scalar_dict:字典类型,key标识每个图像的名称,value同add_scalar的scalar_value;
  3. global_step:同add_scalar

后面参数没用过

官方给出示例:

from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter() r = 5 for i in range(100): writer.add_scalars(‘run_14h’, {‘xsinx’:inp.sin(i/r), ‘xcosx’:inp.cos(i/r), ‘tanx’: np.tan(i/r)}, i) writer.close()

This call adds three values to the same scalar plot with the tag

‘run_14h’ in TensorBoard’s scalar section.

image.png

add_image

API定义

add_image(tag, img_tensor, global_step=None, walltime=None, dataformats=’CHW’)

向tensorboard中绘制图像

参数说明

  1. tag:同add_scalar
  2. img_tensor:Image对象
  3. global_step:如果指定的话,会生成一个类似轮播图的滑动块,在同一个块中展示多张图像;
  4. dataformats:用于指定Image对象的三个值的顺序:维度、宽度、高度

官方给出示例:

from torch.utils.tensorboard import SummaryWriter import numpy as np img = np.zeros((3, 100, 100)) img[0] = np.arange(0, 10000).reshape(100, 100) / 10000 img[1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000

img_HWC = np.zeros((100, 100, 3)) img_HWC[:, :, 0] = np.arange(0, 10000).reshape(100, 100) / 10000 img_HWC[:, :, 1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000

writer = SummaryWriter() writer.add_image(‘my_image’, img, 0)

If you have non-default dimension setting, set the dataformats argument.

writer.add_image(‘my_image_HWC’, img_HWC, 0, dataformats=’HWC’) writer.close()

image.png

add_images

API定义

add_images(tag, img_tensor, global_step=None, walltime=None, dataformats=’NCHW’)

用于将多张图片同时展示在一起

参数说明

  1. tag:同上
  2. img_tensor:图像数据,是一个四维变量,其中多出的一维表示图像的数量
  3. global_step:同上
  4. dataformats:用于执行四个维度的顺序

官方给出示例:

from torch.utils.tensorboard import SummaryWriter import numpy as np

img_batch = np.zeros((16, 3, 100, 100)) for i in range(16): img_batch[i, 0] = np.arange(0, 10000).reshape(100, 100) / 10000 / 16 i img_batch[i, 1] = (1 - np.arange(0, 10000).reshape(100, 100) / 10000) / 16 i

writer = SummaryWriter() writer.add_images(‘my_image_batch’, img_batch, 0) writer.close()

image.png