在导入运行tensorboard得到一个event file文件。
tensorboard基本原理是这样的
-
python代码中将可视化的数据记录到event file中,保存至硬盘
-
采用tensorboard对event file文件进行读取,并在web端进行可视化
-
指令启动:
tensorboard --logdir=your path dir
可能发生的问题:
1. 6006端口被占用:
port 6006 was already in use
E0117 15:58:38.631224 MainThread program.py:260] TensorBoard attempted to bind to port 6006, but it was already in use
TensorBoard attempted to bind to port 6006, but it was already in use
解决方法:修改端口为6007
tensorboard --logdir=your_dir --port=6007
到这里可以知道,tensorboard软件是一个web应用,它对指定目录下的event file进行可视化,可视化页面拥有一系列功能按钮,供开发者使用。
SummaryWriter类介绍
首先介绍Summary Writer的参数设置,然后是方法。
属性:
log_dir (string) – 文件保存目录设置,默认为 runs/current_datetime_hostname
comment (string) – 当log_dir采用默认值时,comment字符串作为子目录
purge_step (int) – ?
max_queue (int) –?
flush_secs (int) – 磁盘刷新时间,默认值为120秒
filename_suffix (string) –文件名后缀
方法:
add_scalar
add_scalar(tag, scalar_value, global_step=None, walltime=None, new_style=False, double_precision=False)
add_scalar(tag, scalar_value, global_step=None, walltime=None, new_style=False, double_precision=False)功能:添加标量;tag的设置可以有个技巧是在同一栏下绘制多个图,如'Loss/train', 'Loss/Valid', 这就类似于matplotlib的subplot(121), subplot(122)
功能:添加标量;tag的设置可以有个技巧是在同一栏下绘制多个图,如'Loss/train', 'Loss/Valid', 这就类似于matplotlib的subplot(121), subplot(122)
-
tag (string) – Data identifier
-
scalar_value (float or string/blobname) – Value to save
-
global_step (int) – Global step value to record
add_scalars
add_scalars
(main_tag, tag_scalar_dict, global_step=None, walltime=None)
功能:在一个坐标轴中绘制多条曲线。常用于曲线对比。
- main_tag (string) – The parent name for the tags
- tag_scalar_dict (dict) – Key-value pair storing the tag and corresponding values
- global_step (int) – Global step value to record
核心在于tag_scalar_dict 字典中存放多条曲线的数值。
add_histogram
add_histogram(tag, values, global_step=None, bins='tensorflow', walltime=None, max_bins=None)
功能:绘制直方图。这里的global_step表明会得到多个直方图,详情请看图理解。
在tensorboard界面,需要进入HISTOGRAM中才能看到直方图可视化。
-
tag (string) – Data identifier
-
values (torch.Tensor, numpy.array, or string/blobname) – Values to build histogram
-
global_step (int) – Global step value to record
-
bins (string) – One of {‘tensorflow’,’auto’, ‘fd’, …}. This determines how the bins are made.
add_image
add_image(tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')
功能:绘制图像。
-
tag (string) – Data identifier
-
img_tensor (torch.Tensor, numpy.array, or string/blobname) – Image data
-
global_step (int) – Global step value to recorddataformats- 数据通道顺序物理意义。默认为 CHW
add_images
add_images(tag, img_tensor, global_step=None, walltime=None, dataformats='NCHW')
功能:绘制图像序列,常用于数据清洗,卷积核,特征图的可视化。
Add batched image data to summary.Note that this requires the pillow package.
-
tag (string) – Data identifier
-
img_tensor (torch.Tensor, numpy.array, or string/blobname) – Image data
-
global_step (int) – Global step value to record
-
walltime (float) – Optional override default walltime (time.time()) seconds after epoch of event
-
dataformats (string) – Image data format specification of the form NCHW, NHWC, CHW, HWC, HW, WH, etc.
add_figure
add_figure(tag, figure, global_step=None, close=True, walltime=None)
功能:将matplotlib的figure绘制到tensorboard中。
Render matplotlib figure into an image and add it to summary.Note that this requires the matplotlib package.
tag (string) – Data identifier
figure (matplotlib.pyplot.figure) – Figure or a list of figures
global_step (int) – Global step value to record
close (bool) – Flag to automatically close the figure
walltime (float) – Optional override default walltime (time.time()) seconds after epoch of event
剩下一些高级函数,就不一一讲解,用法雷同,再次仅汇总,供需使用。
add_video:绘制视频
add_audio:绘制音频,可进行音频播放。
add_text:绘制文本
add_graph:绘制pytorch模型拓扑结构图。
add_embedding:绘制高维数据在低维的投影
add_pr_curve:绘制PR曲线,二分类任务中很实用。
add_mesh:绘制网格、3D点云图。
add_hparams:记录超参数组,可用于记录本次曲线所对应的超参数。