Tensorboard 标量与直方图可视化

Posted 洪流之源

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tensorboard 标量与直方图可视化相关的知识,希望对你有一定的参考价值。

(1)标量

标量就是一个单值,学习率、损失值、准确率等都可称之为标量,如下代码实现了对标量数据可视化:

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


if __name__ == '__main__':

    # 实例化一个SummaryWriter
    # log_dir : evnent file 输出目录,不指定log_dir时,会在当前路径下生成runs的目录,
    # comment : 不指定log_dir时,runs的目录下子目录的后缀,如果设置了log_dir则comment不起作用
    # filename_suffux: envent file文件后缀
    summary_writer = SummaryWriter(log_dir='log', comment='test tensorboard scalar', filename_suffix='test_1')

    # add_scalar() 与 add_scalars()函数是用来可视化标量数据
    # add_scalar()添加一个y轴数据, add_scalars()可以同时添加多个y轴数据, 多个y轴数据需要使用字典的形式输入
    for x in range(100):
        # tag : 为图像的名称
        # scalar_value : 为图像的y轴数据
        # global_step : 为图像的x轴数据
        # walltime : 用于记录发生的时间,默认为 time.time()
        summary_writer.add_scalar(tag='y=2x', scalar_value=x * 2, global_step=x, walltime=None)

        # tag : 为图像的名称
        # tag_scalar_dict : 为图像多个y轴数据, 需要使用字典的形式输入
        # global_step : 为图像的x轴数据
        # walltime : 用于记录发生的时间,默认为 time.time()
        summary_writer.add_scalars(main_tag='data/scalar_group', 
                                   tag_scalar_dict='xsinx': x * np.sin(x), 'xcosx': x * np.cos(x), 'arctanx': np.arctan(x), 
                                   global_step=x,
                                   walltime=None)

运行tensorboard,并指定日志目录:

tensorboard --logdir log

 

 (2) 直方图

通过直方图可以对张量数据进行可视化,比如可视化网络的权重参数、梯度信息等,下面是符合正态分布的tensor数据进行的可视化:

from torch.utils.tensorboard import SummaryWriter
import torch


if __name__ == '__main__':
    
    summary_writer = SummaryWriter(log_dir='log' ,comment='test tensorboard histogram', filename_suffix='test_1')

    for x in range(2):
        torch.manual_seed(x)

        data_normal = torch.randn(640, 640)

        # 统计直方图与多分位数折线图(用于观察数据方差的变化)
        # tag : 为图像的名称
        # values : 要统计的参数
        # global_step : y轴数据
        # bins : 取直方图的bins,默认参数为'tensorflow'
        # walltime : 用于记录发生的时间,默认为 time.time()
        summary_writer.add_histogram(tag='distribution normal', values=data_normal, global_step=x)
    
    summary_writer.close()

运行tensorboard,并指定日志目录

tensorboard --logdir log

 HISTOGRAMS:

 DISTRIBUTIONS:

 DISTRIBUTIONS图是空的图,不知道什么原因。

关于HISTOGRAMS与DISTRIBUTIONS图像的含义,请参考:https://www.cnblogs.com/chouxianyu/p/12622914.html

以上是关于Tensorboard 标量与直方图可视化的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow——TensorBoard可视化

Tensorboard 标量绘图,横轴上带有纪元数

TensorBoard 未显示标量摘要,但显示了图表

Tensorboard 不显示来自估计器的任何标量摘要

TensorBoard 找不到标量统计信息

在 TensorBoard 中找不到任何标量摘要