| | from visdom import Visdom |
| | import json |
| |
|
| | class Visualizer(object): |
| | """ Visualizer |
| | """ |
| | def __init__(self, port='13579', env='main', id=None): |
| | |
| | self.vis = Visdom(port=port, env=env) |
| | self.id = id |
| | self.env = env |
| | |
| | |
| | |
| | |
| | |
| |
|
| | def vis_scalar(self, name, x, y, opts=None): |
| | if not isinstance(x, list): |
| | x = [x] |
| | if not isinstance(y, list): |
| | y = [y] |
| | |
| | if self.id is not None: |
| | name = "[%s]"%self.id + name |
| | default_opts = { 'title': name } |
| | if opts is not None: |
| | default_opts.update(opts) |
| |
|
| | |
| | |
| | self.vis.line( X=x, Y=y, win=name, opts=default_opts, update='append') |
| | |
| | |
| |
|
| | def vis_image(self, name, img, env=None, opts=None): |
| | """ vis image in visdom |
| | """ |
| | if env is None: |
| | env = self.env |
| | if self.id is not None: |
| | name = "[%s]"%self.id + name |
| | |
| | default_opts = { 'title': name } |
| | if opts is not None: |
| | default_opts.update(opts) |
| | |
| | self.vis.image( img=img, win=name, opts=opts, env=env ) |
| | |
| | |
| | |
| | def vis_table(self, name, tbl, opts=None): |
| | |
| |
|
| | tbl_str = "<table width=\"100%\"> " |
| | tbl_str+="<tr> \ |
| | <th>Term</th> \ |
| | <th>Value</th> \ |
| | </tr>" |
| | for k, v in tbl.items(): |
| | tbl_str+= "<tr> \ |
| | <td>%s</td> \ |
| | <td>%s</td> \ |
| | </tr>"%(k, v) |
| |
|
| | tbl_str+="</table>" |
| |
|
| | default_opts = { 'title': name } |
| | if opts is not None: |
| | default_opts.update(opts) |
| | |
| | self.vis.text(tbl_str, win=name, opts=default_opts) |
| | |
| | |
| |
|
| |
|
| | if __name__=='__main__': |
| | import numpy as np |
| | vis = Visualizer(port=35588, env='main') |
| | tbl = {"lr": 214, "momentum": 0.9} |
| | vis.vis_table("test_table", tbl) |
| | tbl = {"lr": 244444, "momentum": 0.9, "haha": "hoho"} |
| | vis.vis_table("test_table", tbl) |
| |
|
| | vis.vis_scalar(name='loss', x=0, y=1) |
| | vis.vis_scalar(name='loss', x=2, y=4) |
| | vis.vis_scalar(name='loss', x=4, y=6) |