PyTorch学习—15.PyTorch中TensorBoard的使用

本文详细介绍了TensorBoard的基本原理,如何通过SummaryWriter在PyTorch中创建和记录事件文件,以及如何利用不同方法如add_scalar和add_scalars进行标量可视化。通过实例演示,展示了如何在训练过程中监控模型参数和进度。
摘要由CSDN通过智能技术生成

一、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()

在这里插入图片描述

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()

在这里插入图片描述
主要方法

  • 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()

生成的事件文件为:
在这里插入图片描述
此时,在终端可视化后可得
在这里插入图片描述
点击这个网址,会使用默认浏览器打开可视化界面
在这里插入图片描述

  • 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()

在这里插入图片描述
在tensorboard的wed端显示:
在这里插入图片描述


如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!
在这里插入图片描述


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值