导入visdom
import visdom
viz = visdom.Visdom()
执行代码的时候还要通过终端输入python -m visdom.server
设置线性和颜色
import numpy as np
import visdom
viz=visdom.Visdom()
win = viz.line(
X=np.column_stack((
np.arange(0, 10),
np.arange(0, 10),
np.arange(0, 10),
)),
Y=np.column_stack((
np.linspace(5, 10, 10),
np.linspace(5, 10, 10) + 5,
np.linspace(5, 10, 10) + 10,
)),
opts={
'dash': np.array(['solid', 'dash', 'dashdot']),
'linecolor': np.array([
[0, 101, 255],
[0, 61, 255],
[255, 255, 0],
]),
'title': 'Different line dash types'
}
)
结果:
画一条折线
import visdom
viz = visdom.Visdom()
viz.line(X=[1, 2, 3, 4], # x坐标
Y=[1, 4, 9, 16], # y值
win="line1", # 窗口id
name="test line", # 线条名称
update='append', # 以添加方式加入
opts={
'showlegend': True, # 显示网格
'title': "Demo line in Visdom",
'xlabel': "x1", # x轴标签
'ylabel': "y1", # y轴标签
},
)
结果:
画两条折线
import visdom
viz = visdom.Visdom()
viz.line(X=[1, 2, 3, 4], # x坐标
Y=[1, 4, 9, 16], # y值
win="line1", # 窗口id
name="test line", # 线条名称
update='append', # 以添加方式加入
opts={
'showlegend': True, # 显示网格
'title': "Demo line in Visdom",
'xlabel': "x1", # x轴标签
'ylabel': "y1", # y轴标签
},
)
viz.line(X=[1, 2, 3, 4], Y=[0.5, 2, 4.5, 8],name="test line2", win='line1', update='append')
结果:
同时画多条曲线
import numpy as np
import visdom
viz=visdom.Visdom()
name = ['y=x^2', 'y=kx+b']
X = np.linspace(-5, 5, 100) # (100,)
viz.line(
Y=np.column_stack((X * X, np.sqrt(X + 5))), # (100, 2)
X=np.column_stack((X, X)), # (100, 2)
opts=dict(markers=False, legend=name),)
结果:
显示实时的动态曲线
import numpy as np
import visdom,time
viz=visdom.Visdom()
x, y = 0, 0
for i in np.linspace(0, 2 * np.pi, 1000):
x = i
y = np.sin(x)
viz.line(X=np.array([x]), Y=np.array([y]), win='sin-realtime', update='append')
time.sleep(0.0001)
from visdom import Visdom
import numpy as np
import torch
viz = Visdom(env='test')
#这句话就新建一个连接客户端
for i in range(0,10):
x = torch.tensor([i])
y = x
viz.line(X=x, Y=y, win='polynomial', update='append' if i>0 else None)
#updateTrace新增一条线
x = torch.arange(0,9,0.1)
y = (x**2) / 9
viz.line(X=x, Y=y, win='polynomial', name='this is a new Trace',update='append')
结果:
显示图片
viz.image的功能可分为如下两类
- image接收一个二维或三维向量,HxW或3×HxW,前者是黑白图像,后者是彩色图像。
- images接收一个四维向量NxCxHxW,C可以是1或3,分别代表黑白和彩色图像。可实现类似torchvision中makegrid的功能,将多张图片拼接在一起。images也可以接收一个二维或三维的向量,此时它所实现的功能与image一致。
from visdom import Visdom
import numpy as np
import torch
viz = Visdom(env='test')
# 这句话就新建一个连接客户端
# 可视化一张随机的黑白图片
viz.image(torch.randn(64, 64).numpy())
# 可视化一张随机的彩色图片
viz.image(torch.randn(3, 64, 64).numpy(), win='random2')
# 可视化36张随机的彩色图片,每行6张
# viz.image(torch.randn(36,3,64,64).numpy(), nrow=6, win='random3',opts={'title':'random_imgs'})
viz.images(torch.randn(36, 3, 64, 64).numpy(), nrow=6, win='random3', opts={'title': 'random_imgs'})
结果:
显示文本
from visdom import Visdom
import numpy as np
import torch
viz = Visdom(env='test')
# 这句话就新建一个连接客户端
a='this is a test'
viz.text(a, win='label', opts=dict(title='batch-y'))
结果: