目录
目录
1 Visdom
visdom是FaceBook开发的一款可视化工具,其实质是一款在网页端的web服务器,对Pytorch的支持较好。
详解PyTorch可视化工具visdom这个写的不错
1.1 安装使用
pip install visdom
python -m visdom.server
1.2 登录使用
由于有防火墙,需要本机ssh远程登录
ssh -L 8887(本机):localhost:8097(服务器) 用户@172.XX.XXX.188
1.3 导入visdom所用的库
from visdom import Visdom
import numpy as np
import time
visdom可视化神经网络的训练步骤大概分为三步:
初始化窗口、初始化窗口信息、更新监听的信息
1.4 监听loss变化
import visdom
from visdom import Visdom
import numpy as np
import time
wind = Visdom()
wind.line([0.], # Y的第一个点的坐标
[0.], # X的第一个点的坐标
win = "train_loss", # 窗口的名称
opts=dict(title="train_loss") # 图像的标列
)
# 更新数据
for step in range(10): # 随机获取数据
loss = np.random.randn() * 0.5 + 2
wind.line([loss], [step], win = "train_loss",update='append') # line(y, x, 哪个窗口, 更新方式)
time.sleep(0.5) # 这句话不是必要的
1.5 监听多条数据
主要在y部分修改[[y1],[y2]]
import visdom
from visdom import Visdom
import numpy as np
import time
wind = Visdom()
wind.line([[0.,0.]], # 两个 Y 的第一个点的坐标
[0.], # X的第一个点的坐标
win = "train", # 窗口的名称
opts=dict(title="loss&acc",legend=["loss","acc"]) # 图像的标列
)
# 更新数据
for step in range(10): # 随机获取数据
loss = np.random.randn() * 0.5 + 2
acc = np.random.randn() +10
wind.line([[loss, acc]], [step], win = "train",update='append') # line([[y1],[y2]],[x], 哪个窗口, 更新方式)
time.sleep(0.5) # 这句话不是必要的
1.5 图片与对应的标签(以后再更新)
for batch_idx, (data, target) in enumerate(train_loader):
data = data.view(-1, 28*28) # 图像数据 正确标签
data, target = data.to(device), target.cuda()
# ----------------------------------------------------------------
# 分类的图像 预测的标签
viz.images(data.view(-1, 1, 28, 28), win='x')
viz.text(str(pred.detach().cpu().numpy()), win='pred',
opts=dict(title='pred'))
2. onnx 网络结构可视化
2.1 安装
pip install onnx
pip install netron
2.2 网络可视化
import torch.onnx
# import network 例子
gen_net = eval('models.' + args.model + '.Generator')(args=args).cuda()
dis_net = eval('models.' + args.model + '.Discriminator')(args=args).cuda()
fixed_z = torch.cuda.FloatTensor(np.random.normal(0, 1, (25, args.latent_dim)))
picture = torch.cuda.FloatTensor(np.random.normal(0, 1, (3, 3, 32, 32)))
torch.onnx.export(gen_net, fixed_z, "SNGAN.onnx",verbose=True, training=True)
torch.onnx.export(dis_net, picture, "dis.onnx", verbose=True, training=True)
2.3 jupyter上执行
import netron
modelpath1 = "/home/yangyeming/NeuralArchitectureSearch/GAN/GANPytorchCollection/dis.onnx"
netron.start(modelpath1)
2.4 如果服务器有防火墙,还需要ssh连接
# 8888本地 8890服务器
ssh -L 8888:localhost:8890 yang@172.3x.23x.18x -p 22