Pytorch训练过程可视化

PyTorch深度学习实战笔记

1. TensorBoard

TensorBoard是TensorFlow提供的一组可视化工具(A Suite of Visualization Tools),可以帮助开发者理解、调试和优化TensorFlow程序,作为一款优秀的可视化组件,自然会被其他框架借用和引进。在PyTorch中也能够通过TensorBoardX组件使用这一款可视化工具,TensorBoardX组件支持scalar、image、figure、histogram、audio、text、graph、onnx_graph、embedding、pr_curve、videosummaries等不同的可视化展示方式。下面先安装TensorBoardX组件。

pip install tensorboardX
pip install tensorflow
pip install Tensorboard_logger

TensorBoard通过读取日志文件进行可视化,使用时需要引入SummaryWriter。

from tensorboardX import SummaryWriter
writer = SummaryWriter()

标量可视化

使用SummaryWriter上的add_scalar方法添加标量,其定义如下。

add_scalar(tag,scalar_value,global_step=None,walltime=None)

第一个参数设定标量的标签;第二个参数指定标量的值;第三个参数是全局的step;最后一个参数是标量产生的时间,默认为当前的系统时间。

# 20个step对应的损失
from tensorboardX import SummaryWriter
writer = SummaryWriter()
losses = list(range(20,0,-1))
for step in range(20): 
    writer.add_scalar("data/loss",losses[step]*5,step)
    writer.add_scalar("data/loss1",losses[step],step)

运行上述代码将在项目目录下产生runs文件夹.
下面通过“tensorboard–host 127.0.0.1–logdir./runs”启动TensorBoard服务,–host参数指定运行的IP地址,–logdir参数则指定日志存放的目录,TensorBoard将读取该目录下的日志文件,并解析和可视化。

tensorboard --host 127.0.0.1 --logdir ./runs

打开浏览器,输入“http://127.0.0.1:6006”即可看到可视化界面。在界面中单击“SCALARS”可以看到刚才写入的标量数据的可视化信息.
注:在VScode中可直接launch TensorBoard session

python.exe -m pip install -U torch-tb-profiler

未完待续

2 . visdom

Visdom是一个专业的可视化工具,用于创建、组织和共享数据的可视化,支持NumPy和Tensor数据,使用简单的命令便可以绘制出丰富的图片,其支持的图表包括折线图、热力图、小提琴图、散点图等。
先通过pip命令安装Visdom:

pip install visdom

启动Visdom服务

python -m visdom.server

启动后通过浏览器访问“http://localhost:8097”即可进入Visdom可视化界面。将数据发送给Visdom进行可视化的过程如下:先实例化一个环境,得到Visdom实例,通过实例中的方法向Visdom服务写入需要可视化的的数据,Visdom接收到数据便进行相应的展示。

import visdom
import numpy as np
import time


# # 单一显示
# viz = visdom.Visdom(port=8097,server="127.0.0.1",env = "Test")
# viz.line(np.arange(1))
# global_step = 0
# while True:
#     global_step += 1
#     print(global_step)
#     viz.line(Y = np.array([np.random.random()]),X = np.array([global_step]),update = 'append',win = "Test")
#     time.sleep(1)


# 多变量显示
viz = visdom.Visdom(port=8097,server="127.0.0.1",env = "Test")
legend = ['train_loss', 'test_loss']
title = 'Train'
# viz.line([[0.,0.]], [0], win='train', opts=dict(title=title, legend=legend))
global_step = 0
while True:
    global_step += 1
    print(global_step)
    train_loss = np.random.random()
    test_loss = np.random.random()*0.8-1
    viz.line([[train_loss,test_loss ]],[global_step],update = 'append',win = "Test",opts=dict(title=title, legend=legend))
    time.sleep(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值