[PyTorch 学习笔记] 5.1 TensorBoard 介绍

本文介绍了如何在 PyTorch 中使用 TensorBoard 进行数据可视化,包括标量、图像、直方图和模型计算图的记录与展示,通过 TensorBoardX 库实现对优化器、损失、精度、权重和梯度的监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章代码:

这篇文章主要介绍了 PyTorch 中的优化器,包括 3 个部分:优化器的概念、optimizer 的属性、optimizer 的方法。

TensorBoard 是 TensorFlow 中强大的可视化工具,支持标量、文本、图像、音频、视频和 Embedding 等多种数据可视化。

在 PyTorch 中也可以使用 TensorBoard,具体是使用 TensorboardX 来调用 TensorBoard。除了安装 TensorboardX,还要安装 TensorFlow 和 TensorBoard,其中 TensorFlow 和 TensorBoard 需要一致。

TensorBoardX 可视化的流程需要首先编写 Python 代码把需要可视化的数据保存到 event file 文件中,然后再使用 TensorBoardX 读取 event file 展示到网页中。

下面的代码是一个保存 event file 的例子:

    import numpy as np
    import matplotlib.pyplot as plt
    from tensorboardX import SummaryWriter
    from common_tools import set_seed
    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('data/scalar_group', {"xsinx": x * np.sin(x),
                                                 "xcosx": x * np.cos(x)}, x)

    writer.close()

上面具体保存的数据,我们先不关注,主要关注的是保存 event file 需要用到 SummaryWriter 类,这个类是用于保存数据的最重要的类,执行完后,会在当前文件夹生成一个runs的文件夹,里面保存的就是数据的 event file。

然后在命令行中输入tensorboard --logdir=lesson5/runs启动 tensorboard 服务,其中lesson5/runsruns文件夹的路径。然后命令行会显示 tensorboard 的访问地址:

TensorBoard 1.9.0 at http://LAPTOP-DPDNNJSU:6006 (Press CTRL+C to quit)

在浏览器中打开,显示如下:


最上面的一栏显示的是数据类型,由于我们在代码中只记录了 scalar 类型的数据,因此只显示`SCALARS`。

右上角有一些功能设置


点击`INACTIVE`显示我们没有记录的数据类型。设置里可以设置刷新 tensorboard 的间隔,在模型训练时可以实时监控数据的变化。

左边的菜单栏如下,点击Show data download links可以展示每个图的下载按钮,如果一个图中有多个数据,需要选中需要下载的曲线,然后下载,格式有 csvjson可选。


第二个选项`Ignore outliers in chart scaling`可以设置是否忽略离群点,在`y_pow_2_x`中,数据的尺度达到了 $10^{18}$,勾选`Ignore outliers in chart scaling`后 $y$ 轴的尺度下降到 $10^{17}$。

Soothing 是对图像进行平滑,下图中,颜色较淡的阴影部分才是真正的曲线数据,Smoothing 设置为了 0.6,进行了平滑才展示为颜色较深的线。

Smoothing 设置为 0,没有进行平滑,显示如下:

Smoothing 设置为 1,则平滑后的线和 $x$ 轴重合,显示如下:

`Horizontal Axis`表示横轴:`STEP`表示原始数据作为横轴,`RELATIVE`和`WALL`都是以时间作为横轴,单位是小时,`RELATIVE`是相对时间,`WALL`是绝对时间。

runs显示所有的 event file,可以选择展示某些 event file 的图像,其中正方形按钮是多选,圆形按钮是单选。


上面的搜索框可以根据 tags 来搜索数据对应的图像

# optimizer 的属性

PyTorch 中提供了 Optimizer 类,定义如下:

class Optimizer(object):
	def __init__(self, params, defaults):
		self.defaults = defaults
        self.state = defaultdict(dict)
        self.param_groups = []

主要有 3 个属性

  • defaults:优化器的超参数,如 weight_decay,momentum
  • state:参数的缓存,如 momentum 中需要用到前几次的梯度,就缓存在这个变量中
  • param_groups:管理的参数组,是一个 list,其中每个元素是字典,包括 momentum、lr、weight_decay、params 等。
  • _step_count:记录更新 次数,在学习率调整中使用

SummaryWriter

torch.utils.tensorboard.writer.SummaryWriter(log_dir=None, comment='', purge_step=None, max_queue=10, flush_secs=120, filename_suffix='')

功能:提供创建 event file 的高级接口

主要功能:

  • log_dir:event file 输出文件夹,默认为runs文件夹
  • comment:不指定 log_dir 时,runs文件夹里的子文件夹后缀
  • filename_suffix:event_file 文件名后缀

代码如下:

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

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

    writer.close()

运行后会生成train_log/test_log_

PyTorch 1.6 版本中,可以通过使用 TensorBoard 进行模型训练过程的可视化。TensorBoard 是 TensorFlow 提供的一个用于可视化模型训练过程的工具,但它也可以和 PyTorch 一起使用。这主要是通过将 PyTorch 的日志信息转换为 TensorBoard 可识别的格式来实现的。 要在 PyTorch 中使用 TensorBoard,你可以使用 `torch.utils.tensorboard` 模块中的 `SummaryWriter` 类。以下是一个基本的使用示例: 1. 首先,你需要安装 TensorBoard,如果你还没有安装,可以通过 pip 进行安装: ``` pip install tensorboard ``` 2. 在你的 PyTorch 脚本中,你可以这样做: ```python import torch from torch.utils.tensorboard import SummaryWriter # 创建一个 SummaryWriter 实例 writer = SummaryWriter() # 假设我们有一些数据和模型参数 data = torch.randn(5, 10) model_param = torch.randn(10, 5) # 使用 writer 将数据写入 TensorBoard writer.add_image('my_image', data) writer.add_graph(model, (model_param,)) writer.close() ``` 3. 数据写入之后,你可以通过命令行启动 TensorBoard: ``` tensorboard --logdir=运行的目录 ``` 默认情况下,`SummaryWriter` 会将数据写入当前工作目录下的 `runs` 文件夹。你需要指定这个 `runs` 文件夹的路径作为 `logdir` 参数。 4. 启动 TensorBoard 后,它会在命令行中给出一个 URL,通常是 `http://localhost:6006`,在浏览器中打开这个 URL 就可以看到 TensorBoard 的可视化界面了。 5.TensorBoard 中,你可以看到 scalar、images、graphs、audio、histograms 等多个可视化选项,根据你写入的数据类型不同,相应的选项卡上会显示不同的信息。 通过这种方式,你可以在 PyTorch 中利用 TensorBoard 的强大可视化功能,来监控和分析模型训练的过程和结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值