PyTorch可视化-在PyTorch训练时使用TensorBoard记录Metrics

本文介绍了如何使用TensorBoard在PyTorch中创建智能文件夹结构,以便有序记录训练过程中的不同实验。通过increment_path函数,每次训练都会自动生成新的文件夹,并利用add_scalar记录训练和验证指标。理解如何区分和组织数据有助于避免混淆,确保每个训练集的独立性和可追踪性。
摘要由CSDN通过智能技术生成

导入必要的依赖包:

from pathlib import Path
import glob
import re
import numpy as np
from torch.utils.tensorboard import SummaryWriter

生成文件夹。在指定路径下遍历,以后缀自增的形式创建新的文件夹,避免重复

# https://github.com/ultralytics/yolov5/blob/c1bed601e9b9a3f5fa8fb529cfa40df7a3a0b903/utils/general.py#L805
def increment_path(path, exist_ok=False, sep='', mkdir=False):
    # Increment file or directory path, i.e. runs/exp --> runs/exp{sep}2, runs/exp{sep}3, ... etc.
    path = Path(path)  # os-agnostic
    if path.exists() and not exist_ok:
        suffix = path.suffix
        path = path.with_suffix('')
        dirs = glob.glob(f"{path}{sep}*")  # similar paths
        matches = [re.search(rf"%s{sep}(\d+)" % path.stem, d) for d in dirs]
        i = [int(m.groups()[0]) for m in matches if m]  # indices
        n = max(i) + 1 if i else 2  # increment number
        path = Path(f"{path}{sep}{n}{suffix}")  # update path
    dir = path if path.suffix == '' else path.parent  # directory
    if not dir.exists() and mkdir:
        dir.mkdir(parents=True, exist_ok=True)  # make directory
    return path

训练并记录:

epochs = 10
steps = 100

save_dir = increment_path('runs1/exp')
print(save_dir)

writer = SummaryWriter(save_dir)
iteration = 0
for epoch in range(epochs):
    for step in range(steps):
        # train
        writer.add_scalar('Loss/train', np.random.random(), iteration)
        writer.add_scalar('Accuracy/train', np.random.random(), iteration)
        # val
        writer.add_scalar('Loss/val', np.random.random(), iteration)
        writer.add_scalar('Accuracy/val', np.random.random(), iteration)
        iteration += 1
        
writer.close()

上面代码多次运行之后的结果:
在这里插入图片描述
在命令行中运行TensorBoard查看:

tensorboard --logdir=runs1

在这里插入图片描述
每运行一次,会创建一个文件夹,左侧蓝色框

代码中add_scalar的第一个参数,也就是tag,如'Accuracy/train''Accuracy/val',相同的tag会把两个图表放在同一个sectionAccuracy

不同的文件夹中的相同tag会画在同个图表中,如右侧4个图表的橙色和蓝色曲线

如果是在同一个文件夹中,具有相同tag的则会画到同一条曲线上,因此在训练时,不同参数的训练要放到不同的文件夹中,否则两次训练会首尾相连,但是如果是中断继续训练,则要放到同一个文件夹中,并且横坐标要从上次中断位置继续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ayiya_Oese

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值