Visdom:可視化神器
項目位址:visdom
文章目錄
- Visdom:可視化神器
-
-
- visdom實質
- visdom核心概念
-
- env:環境
- pane:窗格
- 建立Visdom環境
- 常用API
-
- plot.scatter
- plot.line
- plot.stem
- plot.heatmap
- plot.bar
- plot.histogram
- plot.boxplot
- plot.surf
- plot.contour
- plot.quiver
- plot.image
- plot.video
- plot.svg
- plot.text
- plot.mesh
-
visdom實質
visdom服務是一個 Web Server 服務,用戶端與伺服器端通過tornado進行非阻塞互動,可視化操作不會阻塞目前程式,網絡異常也不會導緻程式退出。
由于使用 PyTorch 架構的時候,很多時候要用到指令行解析器,導緻一些圖的顯示不能使用matplotlib,是以沒辦法隻能用 Visdom 來顯示,比如我的這個部落格裡的項目:增加可視化+代碼注釋 of GitHub項目:Graph Convolutional Networks in PyTorch。
visdom核心概念
env:環境
看作一個大容器。
可以使用envs對可視化空間進行分區。預設地,每個使用者都會有一個叫做main的envs。可以通過程式設計或UI建立新的envs。envs的狀态是長期儲存的。不同環境的可視化結果互相隔離,互不影響。在使用時如果不指定env,預設使用main。
可以通過 url: http://localhost.com:8097/env/main 通路特定的env。如果伺服器是被托管的,那麼可以将此url分享給其他人,那麼其他人也會看到您的可視化結果。
pane:窗格
就是用于繪圖的小視窗,在代碼中叫 window
UI剛開始是個白闆,可以用圖像,圖檔,文本填充它。這些填充的資料出現在 Panes 中,您可以這些 Panes 進行 拖放,删除,調整大小和銷毀操作。Panes 是儲存在 envs 中的, envs 的狀态存儲在會話之間,可以下載下傳Panes中的内容–包括您在svg中的繪圖。
而且可以使用浏覽器的放大縮小功能來調整UI的大小。
建立Visdom環境
import visdom
vis = visdom.Visdom(env='test1')
常用API
Visdom
支援下列API。由Plotly提供可視化支援。
-
: 2D 或 3D 散點圖vis.scatter
-
: 線圖vis.line
-
: 莖葉圖vis.stem
-
: 熱力圖vis.heatmap
-
: 條形圖vis.bar
-
: 直方圖vis.histogram
-
: 箱型圖vis.boxplot
-
: 表面圖vis.surf
-
: 輪廓圖vis.contour
-
: 繪出二維矢量場vis.quiver
-
: 圖檔vis.image
-
: 文本vis.text
-
: 網格圖vis.mesh
-
: 序列化狀态vis.save
plot.scatter
這個函數是用來畫
2D
或
3D
資料的散點圖。它需要輸入 N 2 N^2 N2或 N 3 N^3 N3的 **tensor **或 ndarray
X
來指定 N N N個點的位置。一個可供選擇的長度為 N N N的
vector
用來儲存
X
中的點對應的标簽(1 到 K)。标簽可以通過點的顔色反應出來。
scatter()
支援下列的選項:
-
: 色圖(控制圖的顔色) (options.colormap
; default =string
)'Viridis'
-
: 标記符号 (options.markersymbol
; default =string
)'dot'
-
: 标記大小(options.markersize
; default =number
)'10'
-
: 每個标記的顔色. (options.markercolor
; default =torch.*Tensor
)nil
-
: 包含圖例名字的ptions.legend
table
plot.line
這個函數用來畫線圖。它需要一個形狀為
N
或者
N×M
的tensor
Y
,用來指定
M
條線的值(每條線上有
N
個點)。和一個可供選擇的 tensor
X
用來指定對應的 x軸的值;
X
可以是一個長度為
N
的tensor(這種情況下,M條線共享同一個 x軸),也可以是形狀和
Y
一樣的tensor。
The following
options
are supported:
-
: 填充線下面的區域 (options.fillarea
)boolean
-
: 色圖 (options.colormap
; default =string
)'Viridis'
-
: 顯示點标記 (options.markers
; default =boolean
)false
-
: 标記的形狀 (options.markersymbol
; default =string
)'dot'
-
: 标記的大小 (options.markersize
; default =number
)'10'
-
: 儲存圖例名字的options.legend
table
plot.stem
這個函數用來畫莖葉圖。它需要一個 形狀為
N
或者
N*M
的 tensor
X
來指定
M
時間序列中
N
個點的值。一個可選擇的
Y
,形狀為
N
或者
N×M
,用
Y
來指定時間戳,如果
Y
的形狀是
N
,那麼預設
M
時間序列共享同一個時間戳。
支援以下特定選項:
-
: colormap (options.colormap
; default =string
)'Viridis'
-
:options.legend
containing legend namestable
plot.heatmap
這個函數用來畫熱力圖。它輸入一個 形狀為
N×M
的 tensor
X
。
X
指定了熱力圖中位置的值。
支援下列特定選項:
-
: 色圖 (options.colormap
; default =string
)'Viridis'
-
: 小于這個值的會被剪切成這個值(options.xmin
; default =number
)X:min()
-
: 大于這個值的會被剪切成這個值 (options.xmax
; default =number
)X:max()
-
: 包含x軸标簽的options.columnnames
table
-
: 包含y軸标簽的options.rownames
table
plot.bar
這個函數可以畫正常的,堆起來的,或分組的的條形圖。
輸入參數:
- X(tensor):形狀
或N
,指定每個條的高度。如果N×M
有X
列,那麼每行的值可以看作一組或者把他們值堆起來(取決與M
是否為True)。options.stacked
- Y(tensor, optional):形狀
,指定對應的x軸的值。N
支援以下特定選項:
-
:options.columnnames
containing x-axis labelstable
-
: stack multiple columns inoptions.stacked
:X``options.legend
containing legend labelstable
plot.histogram
這個函數用來畫指定資料的直方圖。他需要輸入長度為
N
的 tensor
X
。
X
儲存了建構直方圖的值。
支援下面特定選項:
-
:options.numbins
的個數 (bins
; default = 30)number
plot.boxplot
這個函數用來畫箱型圖。
輸入:
- X(tensor): 形狀
或N
,指定做第N×M
個箱型圖的m
個值。N
支援以下特定選項:
-
: labels for each of the columns inoptions.legend
X
plot.surf
這個函數用來畫表面圖。
輸入:
- X(tensor):形狀
,指定表面圖上位置的值。N×M
支援以下特定選項:
-
: colormap (options.colormap
; default =string
)'Viridis'
-
: clip minimum value (options.xmin
; default =number
)X:min()
-
: clip maximum value (options.xmax
; default =number
)X:max()
plot.contour
這個函數用來畫輪廓圖。
輸入:
- X(tensor):形狀
,指定了輪廓圖中的值N×M
支援以下特定選項:
-
: colormap (options.colormap
; default =string
)'Viridis'
-
: clip minimum value (options.xmin
; default =number
)X:min()
-
: clip maximum value (options.xmax
; default =number
)X:max()
plot.quiver
這個函數用來畫二維矢量場圖。
輸入:
- X(tensor): 形狀
N*M
- Y(tensor):形狀
N*M
- gridX(tensor, optional):形狀
N*M
- gradY(tensor, optional): 形狀
N*M
與X
決定了 箭頭的長度和方向。可選的Y
和gridX
指定了偏移。gridY
支援下列特定選項:
-
: 最長肩頭的長度 (options.normalize
)number
-
: 是否現實箭頭 (options.arrowheads
; default =boolean
)true
plot.image
這個函數用來畫圖檔。
輸入:
- img(tensor): shape(
)。C*H*W
支援下面特定選項:
-
: JPG quality (options.jpgquality
0-100; default = 100)number
plot.video
這個函數 播放一個視訊。
輸入:
video
的檔案名,或者是一個 shape 為
L*H*W*C
的
tensor
。這個函數不支援其它特定的功能選項。
注意:使用
tensor
作為輸入的時候,需要安裝
ffmpeg
。 能不能播放
video
取決你使用的浏覽器:浏覽器必須要支援
Theano codec in an OGG container
。(chrome可以用)。
plot.svg
此函數繪制一個
SVG
對象。輸入是一個
SVG
字元串或 一個
SVG
檔案的名稱。該功能不支援任何特定的
options
。
plot.text
此函數可在文本框中列印文本。輸入輸入一個
text
字元串。目前不支援特定的
options
plot.mesh
此函數畫出一個網格圖。
輸入:
- X(tensor): shape(
或N*2
) 定義N*3
個頂點N
- Y(tensor, optional):shape(
或M*2
) 定義多邊形M×3
支援下列特定選項:
-
: color (options.color
)string
-
: 多邊形的不透明性 (options.opacity
between 0 and 1)number
Reference:
- 使用 Visdom 在 PyTorch 中進行可視化
- Pytorch求索(2): Pytorch使用visdom進行可視化
- PyTorch 可視化工具 Visdom 介紹