PyTorch训练可视化教程visdom
visdom 快速启动
visdom 的介绍
Visdom是Facebook专为PyTorch开发的实时可视化⼯具包,其作⽤相当于TensorFlow中的Tensorboard,灵活⾼效且界⾯美观,下⾯就⼀起来学习下如何使⽤吧!如果想更多了解关于Visdom的使⽤可以参考官⽅
⾸先来欣赏下官⽅提供的Visdom的可视化界⾯
Visdom的安装
安装⾮常简易,只需要打开cmd窗⼝,输⼊⼀下命令即可快速安装完成
pip install visdom
Visdom 的使⽤
开启监听命令
python -m visdom.server # 或者直接visdom
⽰例1:实时曲线绘制⽅法
⽅法是起点+数据点更新
单条追踪曲线设置
'''
viz = Visdom()# 初始化visdom类
viz.line([0.],## Y的第⼀个点坐标
[0.],## X的第⼀个点坐标
win="train loss",##窗⼝名称
opts=dict(title='train_loss')## 图像标例
)#设置起始点
'''
模型数据
'''
viz.line([1.],## Y的下⼀个点坐标
[1.],## X的下⼀个点坐标
win="train loss",## 窗⼝名称与上个窗⼝同名表⽰显⽰在同⼀个表格⾥        update='append'## 添加到上⼀个点后⾯
)
# Setting up a
# 'train loss'
界⾯⾃动更新如下
⽰例2:多条曲线绘制
多条曲线绘制
多条曲线绘制实际上就是传⼊y值时为⼀个向量
'''
viz = Visdom(env='my_wind')# 注意此时我已经换了新环境
#设置起始点
viz.line([[0.0,0.0]],## Y的起始点
[0.],## X的起始点tensorflow入门教程
win="test loss",##窗⼝名称
opts=dict(title='test_loss')## 图像标例
)
'''
模型数据
'''
viz.line([[1.1,1.5]],## Y的下⼀个点
[1.],## X的下⼀个点
win="test loss",## 窗⼝名称
update='append'## 添加到上⼀个点后⾯
)
# 'test loss'
⼤家此时查看需要先切换environment窗⼝为my才能看到图像,如图所⽰:
⽰例3:图像显⽰
值得注意的是,Visdom⽀持图像的批量显⽰
from visdom import Visdom
import numpy as np
image = np.random.randn(6,3,200,300)# 此时batch为6
viz = Visdom(env='my_image')# 注意此时我已经换了新环境
viz.images(image, win='x')
# 'x'
⽰例4:可视化数据集
值得注意的是,Visdom⽀持图像的批量显⽰
from visdom import Visdom
import numpy as np
import torch
from torchvision import datasets, transforms
# 注意数据集路径
train_loader = torch.utils.data.DataLoader(datasets.MNIST(
r'D:\data',
train=True,
download=False,
transform=transforms.Compose(
[transforms.ToTensor()])),batch_size=128,shuffle=True)
sample=next(iter(train_loader))# 通过迭代器获取样本
# sample[0]为样本数据 sample[1]为类别  nrow=16表⽰每⾏显⽰16张图像viz = Visdom(env='my_visual')# 注意此时我已经换了新环境
viz.images(sample[0],nrow=16,win='mnist',opts=dict(title='mnist'))
# 'mnist'
⽰例5:训练
下⾯通过具体的训练过程通过visdom可视化
为了⽅便显⽰Visdom的功能,直接使⽤⾃带的MNist数据进⾏可视化。'''
导⼊库⽂件
'''
import  torch
import  as nn
import  functional as F
import  torch.optim as optim
from    torchvision import datasets, transforms
from visdom import Visdom
import numpy as np
'''
构建简单的模型:简单线性层+Relu函数的多层感知机
'''
class MLP(nn.Module):
def__init__(self):
super(MLP, self).__init__()
nn.Linear(784,200),
nn.ReLU(inplace=True),
nn.Linear(200,200),
nn.ReLU(inplace=True),
nn.Linear(200,10),
nn.ReLU(inplace=True),
)
def forward(self, x):
x = del(x)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。