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 标量与直方图可视化的主要内容,如果未能解决你的问题,请参考以下文章