天天看點

Visdom:Python可視化神器Visdom:可視化神器

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分享給其他人,那麼其他人也會看到您的可視化結果。

Visdom:Python可視化神器Visdom:可視化神器

pane:窗格

就是用于繪圖的小視窗,在代碼中叫 window

UI剛開始是個白闆,可以用圖像,圖檔,文本填充它。這些填充的資料出現在 Panes 中,您可以這些 Panes 進行 拖放,删除,調整大小和銷毀操作。Panes 是儲存在 envs 中的, envs 的狀态存儲在會話之間,可以下載下傳Panes中的内容–包括您在svg中的繪圖。

而且可以使用浏覽器的放大縮小功能來調整UI的大小。

建立Visdom環境

import visdom 

vis = visdom.Visdom(env='test1') 

           

常用API

Visdom

支援下列API。由Plotly提供可視化支援。

  • vis.scatter

    : 2D 或 3D 散點圖
  • 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

    : 色圖(控制圖的顔色) (

    string

    ; default =

    'Viridis'

    )
  • options.markersymbol

    : 标記符号 (

    string

    ; default =

    'dot'

    )
  • options.markersize

    : 标記大小(

    number

    ; default =

    '10'

    )
  • options.markercolor

    : 每個标記的顔色. (

    torch.*Tensor

    ; default =

    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

    : 色圖 (

    string

    ; default =

    'Viridis'

    )
  • options.markers

    : 顯示點标記 (

    boolean

    ; default =

    false

    )
  • options.markersymbol

    : 标記的形狀 (

    string

    ; default =

    'dot'

    )
  • options.markersize

    : 标記的大小 (

    number

    ; default =

    '10'

    )
  • options.legend

    : 儲存圖例名字的

    table

plot.stem

這個函數用來畫莖葉圖。它需要一個 形狀為

N

或者

N*M

的 tensor

X

來指定

M

時間序列中

N

個點的值。一個可選擇的

Y

,形狀為

N

或者

N×M

,用

Y

來指定時間戳,如果

Y

的形狀是

N

,那麼預設

M

時間序列共享同一個時間戳。

支援以下特定選項:

  • options.colormap

    : colormap (

    string

    ; default =

    'Viridis'

    )
  • options.legend

    :

    table

    containing legend names

plot.heatmap

這個函數用來畫熱力圖。它輸入一個 形狀為

N×M

的 tensor

X

X

指定了熱力圖中位置的值。

支援下列特定選項:

  • options.colormap

    : 色圖 (

    string

    ; default =

    'Viridis'

    )
  • options.xmin

    : 小于這個值的會被剪切成這個值(

    number

    ; default =

    X:min()

    )
  • options.xmax

    : 大于這個值的會被剪切成這個值 (

    number

    ; default =

    X:max()

    )
  • options.columnnames

    : 包含x軸标簽的

    table

  • options.rownames

    : 包含y軸标簽的

    table

plot.bar

這個函數可以畫正常的,堆起來的,或分組的的條形圖。

輸入參數:

  • X(tensor):形狀

    N

    N×M

    ,指定每個條的高度。如果

    X

    M

    列,那麼每行的值可以看作一組或者把他們值堆起來(取決與

    options.stacked

    是否為True)。
  • Y(tensor, optional):形狀

    N

    ,指定對應的x軸的值。

支援以下特定選項:

  • options.columnnames

    :

    table

    containing x-axis labels
  • options.stacked

    : stack multiple columns in

    X``options.legend

    :

    table

    containing legend labels

plot.histogram

這個函數用來畫指定資料的直方圖。他需要輸入長度為

N

的 tensor

X

X

儲存了建構直方圖的值。

支援下面特定選項:

  • options.numbins

    :

    bins

    的個數 (

    number

    ; default = 30)

plot.boxplot

這個函數用來畫箱型圖。

輸入:

  • X(tensor): 形狀

    N

    N×M

    ,指定做第

    m

    個箱型圖的

    N

    個值。

支援以下特定選項:

  • options.legend

    : labels for each of the columns in

    X

plot.surf

這個函數用來畫表面圖。

輸入:

  • X(tensor):形狀

    N×M

    ,指定表面圖上位置的值。

支援以下特定選項:

  • options.colormap

    : colormap (

    string

    ; default =

    'Viridis'

    )
  • options.xmin

    : clip minimum value (

    number

    ; default =

    X:min()

    )
  • options.xmax

    : clip maximum value (

    number

    ; default =

    X:max()

    )

plot.contour

這個函數用來畫輪廓圖。

輸入:

  • X(tensor):形狀

    N×M

    ,指定了輪廓圖中的值

支援以下特定選項:

  • options.colormap

    : colormap (

    string

    ; default =

    'Viridis'

    )
  • options.xmin

    : clip minimum value (

    number

    ; default =

    X:min()

    )
  • options.xmax

    : clip maximum value (

    number

    ; default =

    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

    : 是否現實箭頭 (

    boolean

    ; default =

    true

    )

plot.image

這個函數用來畫圖檔。

輸入:

  • img(tensor): shape(

    C*H*W

    )。

支援下面特定選項:

  • options.jpgquality

    : JPG quality (

    number

    0-100; default = 100)

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

    ) 定義多邊形

支援下列特定選項:

  • options.color

    : color (

    string

    )
  • options.opacity

    : 多邊形的不透明性 (

    number

    between 0 and 1)

Reference:

  1. 使用 Visdom 在 PyTorch 中進行可視化
  2. Pytorch求索(2): Pytorch使用visdom進行可視化
  3. PyTorch 可視化工具 Visdom 介紹