目錄
- 一、Visdom簡介
- 二、安裝和運行
- 三、可視化例子
- 1、輸出Hello World!
- 2、顯示圖像
- 3、繪制散點圖
- 4、繪制線條
- 4.1 繪制一條直線
- 4.2 繪制兩條直線
- 4.3 繪制正弦曲線
- 總結
一、Visdom簡介
Visdom是由Facebook公司開發(fā)的一個進行數(shù)據(jù)可視化的Web應用程序,支持Torch、Numpy、Pytorch這3個庫的創(chuàng)建、管理和分享實時的數(shù)據(jù)可視化結果。
二、安裝和運行
可直接使用pip進行安裝,命令如下:
安裝過程如下:
安裝完成后,運行下面的代碼啟動visdom服務器(運行需要時間,需要稍等一下;下圖中的報錯ERROR我沒有管,不影響正常運行):
按照提示,在瀏覽器中輸入http://localhost:8097就可以訪問visdom了。初始界面如下圖所示,是一個沒有任何視窗的main環(huán)境。
三、可視化例子
1、輸出Hello World!
打開開發(fā)工具(我用的是Pycharm2020.3),新建程序文件,輸入以下代碼:
import visdom
vis = visdom.Visdom()
vis.text("Hello World!")
點擊運行,返回查看瀏覽器。這時瀏覽器會出現(xiàn)一個視窗,內(nèi)容為“Hello World!”。
拖拽視窗右下角箭頭處(如圖綠框處)可對視窗大小進行縮放,拖動視窗頂部橫條(如圖紅框處)可以移動視窗。
2、顯示圖像
visdom可以直接顯示Tensor格式的圖像數(shù)據(jù)。
打開開發(fā)工具,新建程序文件,輸入以下代碼:
import visdom
from PIL import Image
import torchvision.transforms.functional as TF
demo_pic = Image.open("1.jpg")
img_tensor = TF.to_tensor(demo_pic)
vis = visdom.Visdom()
vis.image(img_tensor)
結果如下圖所示:
可以用images()函數(shù)同時顯示多張圖片,代碼如下:
import visdom
from PIL import Image
import torchvision.transforms.functional as TF
import torch
demo_pic = Image.open("1.jpg")
img_tensor = TF.to_tensor(demo_pic)
img_tensors = torch.Tensor([img_tensor.numpy(), img_tensor.numpy()])
vis = visdom.Visdom()
vis.images(img_tensors)
結果如下:
3、繪制散點圖
使用scatter()函數(shù)可以繪制二維或者三維的散點圖。代碼如下:
import visdom
import numpy as np
import torch
Y = np.random.rand(100)
vis = visdom.Visdom()
# vis = visdom.Visdom(env='my_wind')#設置環(huán)境窗口的名稱是'my_wind',如果不設置默認為main
# 2—D
twoD_scatter = vis.scatter(X=torch.rand(100, 2),
Y=(Y + 1.5).astype(int), # 轉換成100個1或2的整數(shù)
opts=dict(
legend=['Apples', 'Pears'], # 圖例名稱
xtickmin=-1, # 設置x坐標軸下限
xtickmax=2.5, # 設置x坐標軸上限
xtickstep=0.5, # 設置x坐標軸間隔
ytickmin=-1,
ytickmax=2.5,
ytickstep=0.5,
markersymbol='dot' # 設置數(shù)據(jù)顯示樣式
),
)
# 3-D
# 3d scatterplot with custom labels and ranges
threeD_scatter = vis.scatter(X=np.random.rand(100, 3),
Y=(Y + 1.5).astype(int),
opts=dict(
legend=['Men', 'Women'],
markersize=5, # 標記大小
xtickmin=0,
xtickmax=2,
xlabel='Arbitrary', # 標簽
xtickvals=[0, 0.75, 1.6, 2], # 設置坐標軸顯示值
ytickmin=0,
ytickmax=2,
ytickstep=0.5,
ztickmin=0,
ztickmax=1,
ztickstep=0.5,
)
)
運行結果如下圖所示:
如果想要通過程序實現(xiàn)散點圖參數(shù)的更新,可以使用update_window_opts()函數(shù),代碼如下:
vis.update_window_opts(
win=twoD_scatter,
opts=dict(
legend=['Apples', 'Pears'],
xtickmin=0,
xtickmax=1,
xtickstep=0.5,
ytickmin=0,
ytickmax=1,
ytickstep=0.5,
markersymbol='dot'
)
)
update_window_opts()傳入兩個參數(shù),第一個是視窗的實例,例子中是twoD_scatter;第二個是更新的參數(shù)字典opts。
更新后結果如下圖所示:
4、繪制線條
4.1 繪制一條直線
代碼如下:
import visdom
import numpy as np
vis = visdom.Visdom(env='my_windows') # 設置環(huán)境窗口的名稱,如果不設置名稱就默認為main
# 繪制一條直線
x = list(range(10))
y = list(range(10))
# 使用line函數(shù)繪制直線 并選擇顯示坐標軸
vis.line(X=np.array(x), Y=np.array(y), opts=dict(showlegend=True))
結果如圖所示:
4.2 繪制兩條直線
代碼如下:
# 繪制兩條直線
import visdom
import numpy as np
vis = visdom.Visdom(env='my_windows')
x = list(range(10))
y = list(range(10))
z = list(range(1,11))
vis.line(X=np.array(x), Y=np.column_stack((np.array(y), np.array(z))), opts=dict(showlegend=True))
結果如圖所示:
4.3 繪制正弦曲線
代碼如下:
import visdom
import torch
vis = visdom.Visdom(env='sin')
x = torch.arange(0, 100, 0.1)
y = torch.sin(x)
vis.line(X=x,Y=y,win='sin(x)',opts=dict(showlegend=True))
結果如圖所示:
參考文獻
Pytorch深度學習入門--曾芃壹
https://www.pythonf.cn/read/3068
總結
到此這篇關于Pytorch可視化之Visdom使用的文章就介紹到這了,更多相關Pytorch可視化Visdom內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- pytorch + visdom CNN處理自建圖片數(shù)據(jù)集的方法
- pytorch + visdom 處理簡單分類問題的示例
- pytorch visdom安裝開啟及使用方法