Pytorc技巧 TensorBoard可视化的使用
首先pip install tensorboard
介绍
TensorBoard库在pytorch 1版本之后被引入,它的功能是可以将训练过程中的结果以图像的形式保存,如下
它既可以存储loss的训练过程,也可以存储图像的训练过程
入门
添加数据
这是一段简单的实例代码,下面就以他为例来解析一下
# -*- coding: utf-8 -*-
# @Time : 2021/1/31 13:46
# @Author : JokerTong
# @File : demo1.py
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
writer = SummaryWriter('logs')
img_path = r'D:\Source\Datasets\cat_and_dog\train\cat.0.jpg'
img = Image.open(img_path)
img_np = np.array(img)
writer.add_image('test_img', img_np, 1, dataformats='HWC')
# y = x
for i in range(100):
writer.add_scalar('y=x', i, i)
writer.close()
创建
参数logs
的意思就是会创建一个logs
的文件夹来保存结果
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('logs')
主要通过如下两个函数来把中间结果加入 tensorboard 中
writer.add_image()
writer.add_scalar()
add_scalar
添加训练过程的损失
其中有三个主要的参数
tag
代表标题 传入字符串类型scalar_value
相当于y
轴的值, 通常可以把loss传入进去global_step
相当于x
轴的值, 通过传入epoch
add_image
顾名思义,是把图片的结果传入tensorboard
tag
标题img_tensor
图像的数据, 要求以numpy的格式或者tensor的格式- numpy 的格式通过 PIL Image来读取 并通过 np.array来转换(如上述案例代码)
- tensor 的格式通过 transformers来进行转换, 会在后面的文章中介绍
global_step
训练轮数dataformats
图像的尺寸格式 默认的格式是 形如(3, H, W) 即通道,高,长- 如果传入的数据顺序不一致的话就需要用该参数来指定 通道与长,宽的顺序
启动查看
上述的命令在运行之后会在当前文件夹下创建一个 logs
文件夹
里面记录了训练的过程
启动tensorboard的命令也要在该路径下运行
用dir
查看后能看到logs
文件夹即可
logdir
指定存放中间过程的路径port
指定启动端口号 默认为6006
tensorboard --logdir=logs --port=6007
启动完成后点击链接即可查看