visdom教程
visdom安裝與啓動服務
安裝visdom
pip install visdom
打開服務
python -m visdom.server
瀏覽器中打開對應的網址。
visdom常用功能
首先創建一個新的環境,如不創建則默認在main環境下
#_*_coding:utf-8 _*_
import numpy as np
import visdom
import time
viz = visdom.Visdom(env="Test1") # 創建環境名爲Test1
image窗口:圖像顯示與更新窗口顯示
下面代碼在一個image窗口中不斷更新顯示圖像
#單張圖像顯示與更新demo
image = viz.image(np.random.rand(3,256,256),opts={'title':'image1','caption':'How random.'})
for i in range(10):
viz.image(np.random.randn( 3, 256, 256),win = image)
time.sleep(0.5)
images窗口:多個圖像顯示與更新窗口顯示
#多圖像顯示與更新demo
images = viz.images(
np.random.randn(20, 3, 64, 64),
opts=dict(title='Random images', caption='How random.',nrow=5)
)
for i in range(10):
viz.images(np.random.randn(20, 3, 64, 64),win = images)
time.sleep(0.5)
text窗口:顯示文本與更新文本
#text 顯示與更新顯示demo,將在窗口中連續打印字符
text = viz.text('Hello World !')
strForOut = "This is a string for you to print!"
out = ""
for i in range(len(strForOut)):
out = out + strForOut[i]
viz.text(out,win = text)
time.sleep(0.2)
line窗口:繪製折線圖與更新折線圖
#繪畫折線圖演示
x=0
name=['acc','loss','loss2']
for i in range(50):
y = np.random.randint(5, size=(1, 3))
viz.line(Y=y,X=np.ones(y.shape)*x,
win='line',
opts=dict(legend=name,
title='line test',
width=800,
height=800,
xlabel='Time',
ylabel='Volume'),
update=None if x == 0 else 'append'
)
time.sleep(0.1)
x+=1
scatter窗口:繪製散點圖與更新散點圖
# 繪製散點圖演示 二維
colors = np.random.randint(0, 255, (3, 3,))#第一維3表示該數據可以分爲三類,以三種顏色的三點來比表示
win = viz.scatter(
X=np.random.rand(255, 2),#表示要展示的散點數據
#Y=(np.random.rand(255) + 1.5).astype(int),
Y=np.random.randint(1,4,(255)),#每一個數據的類別,將以其對應的colors中的顏色來顯示
opts=dict(
markersize=5,
markercolor=colors,
legend=['1', '2','3'],
markersymbol = 'cross-thin-open'
),
)
# 繪製散點圖演示 三維
colors = np.random.randint(0, 255, (3, 3,))#第一維3表示該數據可以分爲三類,以三種顏色的三點來比表示
win = viz.scatter(
X=np.random.rand(255, 3),#表示要展示的散點數據
#Y=(np.random.rand(255) + 1.5).astype(int),
Y=np.random.randint(1,4,(255)),#每一個數據的類別,將以其對應的colors中的顏色來顯示
opts=dict(
markersize=5,
markercolor=colors,
legend=['1', '2','3'],
markersymbol = 'cross-thin-open'
),
)
#實時更新繪製散點圖
legend=['1', '2','3']
Scatter = viz.scatter(
X=np.array([[0,0]]),
Y=np.array([1]),
opts=dict(
markersize=5,
legend=legend,
# markersymbol = 'cross-thin-open'
),
)
for i in range(20):
X = np.random.rand(1,2)
Y = np.random.randint(1,4,1)
print(Y)
viz.scatter(
X=X,
Y=Y,
win=Scatter,
update= 'append',
name = legend[Y[0]-1],
opts=dict(
markersize=5,
# markersymbol = 'cross-thin-open'
)
)
time.sleep(0.5)
更多應用請參考官方demo:
https://github.com/facebookresearch/visdom/blob/master/example/demo.py