使用visdom可视化pytorch训练过程

1、安装

pip install visdom

或者

conda install -c conda-forge visdom

2、启动服务

python -m visdom.server

浏览器输入http://localhost:8097查看

3、使用

参考:https://github.com/noagarcia/visdom-tutorial

https://github.com/facebookresearch/visdom

from visdom import Visdom
import numpy as np


class VisdomLinePlotter(object):
    """Plots to Visdom"""

    def __init__(self, env_name='main'):
        self.viz = Visdom()
        self.env = env_name
        self.plots = {}

    def plot(self, var_name, split_name, title_name, x, y):
        if var_name not in self.plots:
            self.plots[var_name] = self.viz.line(X=np.array([x, x]), Y=np.array([y, y]), env=self.env, opts=dict(
                legend=[split_name],
                title=title_name,
                xlabel='Epochs',
                ylabel=var_name
            ))
        else:
            self.viz.line(X=np.array([x]), Y=np.array([y]), env=self.env, win=self.plots[var_name], name=split_name,
                          update='append')

使用

import visdom_utils

global plotter
plotter = visdom_utils.VisdomLinePlotter(env_name='Tutorial Plots')
plotter_name = 'cnn casia Loss lr={:.3f}'.format(options.lr_cnnh)

def train:
    .....
    plotter.plot('loss', 'train', plotter_name, (epoch - 1) * len(train_data_loader) + iteration, loss.item())

4、问题

Connection is already closed.

暂未解决!

5、远程

连接ssh时,将服务器的8097端口重定向到自己机器上来:

ssh -L 18097:127.0.0.1:8097 username@remote_server_ip

其中:18097:127.0.0.1代表自己机器上的18097号端口,8097是服务器上visdom使用的端口。

在服务器上使用8097端口正常启动tensorboard:

python -m visdom.server

在本地浏览器中输入地址:

127.0.0.1:18097