当前位置:   article > 正文

PyTorch可视化-在PyTorch训练时使用TensorBoard记录Metrics_pytorch output metrics

pytorch output metrics

导入必要的依赖包:

from pathlib import Path
import glob
import re
import numpy as np
from torch.utils.tensorboard import SummaryWriter
  • 1
  • 2
  • 3
  • 4
  • 5

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

# 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
'
运行

训练并记录:

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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

tensorboard --logdir=runs1
  • 1

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/974266
推荐阅读
相关标签
  

闽ICP备14008679号