文章目录

  • 一、TensorBoard简介与安装
  • 1.TensorBoard的运行机制
  • 2. TensorBoard安装
  • 二、TensorBoard的使用
  • 1.SummaryWriter


一、TensorBoard简介与安装

  TensorBoard是一种可视化工具。在训练过程中,我们要可视化训练过程,用来监控我们当前训练的训练状态。TensorBoard是TensorFlow中强大的可视化工具,但目前PyTorch已支持TensorBoard的使用,支持标量、图像、文本、音频、视频和Eembedding等多种数据可视化。

1.TensorBoard的运行机制

  • python脚本中记录可视化的数据
  • 将数据存储在硬盘中,以event file的形式存储
  • 在终端使用TensorBoard工具读取event file的形式数据,TensorBoard工具在Web端进行可视化

    网址即为可视化后的网址

2. TensorBoard安装

  在conda中直接输入pip install tensorboard来进行安装

二、TensorBoard的使用

1.SummaryWriter

class SummaryWriter(object):
	def __init__(self, log_dir=None, comment='', 
		purge_step=None, max_queue=10,
		flush_secs=120, filename_suffix=''):
		...

功能:提供创建event file的高级接口
主要属性

  • log_dir:event file输出文件夹
  • comment:不指定log_dir时,文件夹后缀
  • filename_suffix:event file文件名后缀

下面展示这三个参数的使用

import os
import numpy as np
import matplotlib.pyplot as plt
from torch.utils.tensorboard import SummaryWriter

log_dir = "./train_log/test_log_dir"
writer = SummaryWriter(log_dir=log_dir, comment='_scalars', filename_suffix="12345678")

for x in range(100):
    writer.add_scalar('y=pow_2_x', 2 ** x, x)

writer.close()

pytorch tensor扩展操作 pytorch中tensorboard_pytorch tensor扩展操作

import os
import numpy as np
import matplotlib.pyplot as plt
from torch.utils.tensorboard import SummaryWriter

log_dir = "./train_log/test_log_dir"
writer = SummaryWriter(comment='_scalars', filename_suffix="12345678")

for x in range(100):
    writer.add_scalar('y=pow_2_x', 2 ** x, x)

writer.close()

pytorch tensor扩展操作 pytorch中tensorboard_PyTorch_02


主要方法

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

功能:记录标量,缺点是只能记录一条曲线

  • tag:标签名,唯一标识
  • scalar_value:要记录的标量
  • global_step:x轴
  • add_scalars()
add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None)
  • main_tag:标签
  • tag_scalar_dict:key是变量的tag,value是变量的值

上述两个方法的使用如下:

import os
import numpy as np
import matplotlib.pyplot as plt
from torch.utils.tensorboard import SummaryWriter
max_epoch = 100

writer = SummaryWriter(comment='test_comment', filename_suffix="test_suffix")

for x in range(max_epoch):

    writer.add_scalar('y=2x', x * 2, x)
    writer.add_scalar('y=pow_2_x', 2 ** x, x)

    writer.add_scalars('materials/scalar_group', {"xsinx": x * np.sin(x),
                                             "xcosx": x * np.cos(x)}, x)

writer.close()

生成的事件文件为:

pytorch tensor扩展操作 pytorch中tensorboard_pytorch tensor扩展操作_03


此时,在终端可视化后可得

pytorch tensor扩展操作 pytorch中tensorboard_pytorch tensor扩展操作_04


点击这个网址,会使用默认浏览器打开可视化界面

pytorch tensor扩展操作 pytorch中tensorboard_pytorch tensor扩展操作_05

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

功能:统计直方图与多分位数折线图,用于分析模型参数分布与梯度分布是非常有用的

  • tag:标签名,唯一标识
  • values:要统计的参数
  • global_step:y轴
  • bins:取直方图的bins
import os
import numpy as np
import matplotlib.pyplot as plt
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter(comment='test_comment', filename_suffix="test_suffix")

for x in range(2):

    np.random.seed(x)

    # 等差分布
    data_union = np.arange(100)
    # 正态分布
    data_normal = np.random.normal(size=1000)

    writer.add_histogram('distribution union', data_union, x)
    writer.add_histogram('distribution normal', data_normal, x)

    plt.subplot(121).hist(data_union, label="union")
    plt.subplot(122).hist(data_normal, label="normal")
    plt.legend()
    plt.show()

writer.close()

pytorch tensor扩展操作 pytorch中tensorboard_TensorBoard_06


在tensorboard的wed端显示:

pytorch tensor扩展操作 pytorch中tensorboard_pytorch tensor扩展操作_07


如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!

pytorch tensor扩展操作 pytorch中tensorboard_PyTorch_08