1. 程式人生 > >Pytorch Visdom

Pytorch Visdom

rsize randint ext 區域 效果 散點 之間 span math

fb官方的一些demo

一. show something

1. vis.image:顯示一張圖片

viz.image(
    np.random.rand(3, 512, 256),
    opts=dict(title=Random!, caption=How random.),
)
  • opts.jpgqualityJPG質量(number0-100;默認= 100
  • opts.caption:圖像的標題

2. vis.images:顯示一組圖片

viz.images(
    np.random.randn(20, 3, 64, 64),
    opts=dict(title=
Random images, caption=How random.) )

輸入類型:B x C x H x W張量或list of images全部相同的大小。它使大小的圖像(B / Nrow,Nrow)的網格。 可選參數opts:

  • nrow:連續的圖像數量
  • padding:在圖像周圍填充,四邊均勻填充
  • opts.jpgqualityJPG質量(number0-100;默認= 100
  • opts.caption:圖像的標題

3. vis.text:顯示一段文本

 viz.text(Hello World !)

4. viz.video:顯示一段視頻

video = np.empty([256, 250, 250, 3], dtype=np.uint8)
for n in range(256): video[n, :, :, :].fill(n) viz.video(tensor=video)

二. Draw something

1. vis.scatter :繪制2D或3D散點圖

Y = np.random.rand(100)
old_scatter = viz.scatter(     # 新開一個scatter窗口
X=np.random.rand(100, 2),
Y=(Y[Y > 0] + 1.5).astype(int),
opts=dict(
    legend=[Didnt, Update],
    xtickmin
=-50, xtickmax=50, xtickstep=0.5, ytickmin=-50, ytickmax=50, ytickstep=0.5, markersymbol=cross-thin-open, ), ) viz.update_window_opts( win=old_scatter, # 更新窗口 opts=dict( legend=[Apples, Pears], xtickmin=0, xtickmax=1, xtickstep=0.5, ytickmin=0, ytickmax=1, ytickstep=0.5, markersymbol=cross-thin-open, ), )
  • opts.colormap :colormap(string; default = ‘Viridis‘)
  • opts.markersymbol:標誌符號(string;默認= ‘dot‘)
  • opts.markersize :標記大小(number;默認= ‘10‘)
  • opts.markercolor:每個標記的顏色。(torch.*Tensor; default = nil)
  • opts.legend :table包含圖例名稱

opts.markercolor是一個整數值的張量。張量可以是大小N或N x 3或K或K x 3。

  • 尺寸張量N:每個數據點的單一強度值。0 =黑色,255 =紅色
  • 尺寸張量N x 3:每個數據點的紅色,綠色和藍色強度。0,0,0 =黑色,255,255,255 =白色
  • 尺寸K和張量K x 3:與每個數據點具有唯一的顏色不同,對於特定標簽的所有點共享相同的顏色。

技術分享圖片 技術分享圖片

可以在visdom界面上直接保存png格式

又如右上圖:

viz.scatter(
    X=np.random.rand(100, 3),
    Y=(Y + 1.5).astype(int),
    opts=dict(
        legend=[Men, Women],
        markersize=5,
    )
)

定制點類型、強度、顏色、文字:

技術分享圖片
viz.scatter(
    X=np.random.rand(255, 2),
    Y=(np.random.randn(255) > 0) + 1,
    opts=dict(
        markersize=10,
        markercolor=np.floor(np.random.random((2, 3)) * 255),
    ),
)

win = viz.scatter(
    X=np.random.rand(255, 2),
    opts=dict(
        markersize=10,
        markercolor=np.random.randint(0, 255, (255, 3,)),
    ),
)

# assert that the window exists
assert viz.win_exists(win), Created window marked as not existing

# add new trace to scatter plot
viz.scatter(
    X=np.random.rand(255),
    Y=np.random.rand(255),
    win=win,
    name=new_trace,
    update=new
)

# 2D scatter plot with text labels:
viz.scatter(
    X=np.random.rand(10, 2),
    opts=dict(
        textlabels=[Label %d % (i + 1) for i in range(10)]
    )
)
View Code

效果如下:

技術分享圖片

2. viz.bar: 繪制規則的,堆積的或分組的條形圖

viz.bar(X=np.random.rand(20))
viz.bar(
    X=np.abs(np.random.rand(5, 3)),
    opts=dict(
        stacked=True,
        legend=[Facebook, Google, Twitter],
        rownames=[2012, 2013, 2014, 2015, 2016]
    )
)
viz.bar(
    X=np.random.rand(20, 3),
    opts=dict(
        stacked=False,
        legend=[The Netherlands, France, United States]
    )
)

可選參數:

  • opts.rownames:table包含x軸標簽
  • opts.stacked :堆棧中的多個列 X
  • opts.legend :table包含圖例標簽

效果如下:

技術分享圖片

3 viz.histogram: 繪制直方圖

viz.histogram(X=np.random.rand(10000), opts=dict(numbins=20))

可選參數:

  • opts.numbins:箱數量(number;默認= 30)

4. viz.heatmap:繪制熱圖

viz.heatmap(
    X=np.outer(np.arange(1, 6), np.arange(1, 11)),
    opts=dict(
        columnnames=[a, b, c, d, e, f, g, h, i, j],
        rownames=[y1, y2, y3, y4, y5],
        colormap=Electric,
    )
)

可選參數:

  • opts.colormap :colormap(string; default = ‘Viridis‘)
  • opts.xmin :clip最小值(number;默認= X:min())
  • opts.xmax :clip最大值(number;默認= X:max())
  • opts.columnnames:table包含x軸標簽
  • opts.rownames :table包含y軸標簽

5. viz.contour:繪制等高線

x = np.tile(np.arange(1, 101), (100, 1))
y = x.transpose()
X = np.exp((((x - 50) ** 2) + ((y - 50) ** 2)) / -(20.0 ** 2))
viz.contour(X=X, opts=dict(colormap=Viridis))

可選參數:

  • opts.colormap:colormap(string; default = ‘Viridis‘)
  • opts.xmin :clip最小值(number;默認= X:min())
  • opts.xmax :clip最大值(number;默認= X:max())

6. vis.surf :繪制曲面圖

viz.surf(X=X, opts=dict(colormap=Hot))

可選參數:

  • opts.colormap:colormap(string; default = ‘Viridis‘)
  • opts.xmin :clip最小值(number;默認= X:min())
  • opts.xmax :clip最大值(number;默認= X:max())

7. vis.boxplot:繪制箱型圖

X = np.random.rand(100, 2)
X[:, 1] += 2
viz.boxplot(
    X=X,
    opts=dict(legend=[Men, Women])
)

可選參數:

  • opts.legend:中的每一列的標簽 X

8. vis.stem:繪制桿圖

Y = np.linspace(0, 2 * math.pi, 70)
X = np.column_stack((np.sin(Y), np.cos(Y)))
viz.stem(
    X=X,
    Y=Y,
    opts=dict(legend=[Sine, Cosine])
)

可選參數:

  • opts.colormap:colormap(string; default = ‘Viridis‘)
  • opts.legend :table包含圖例名稱

技術分享圖片

直方圖至桿圖實例:(左至右,上至下)

9. viz.quiver:繪制矢量場

X = np.arange(0, 2.1, .2)
Y = np.arange(0, 2.1, .2)
X = np.broadcast_to(np.expand_dims(X, axis=1), (len(X), len(X)))
Y = np.broadcast_to(np.expand_dims(Y, axis=0), (len(Y), len(Y)))
U = np.multiply(np.cos(X), Y)
V = np.multiply(np.sin(X), Y)
viz.quiver(
    X=U,
    Y=V,
    opts=dict(normalize=0.9),
)
  • opts.normalize:最長箭頭的長度(number)
  • opts.arrowheads:顯示箭頭(boolean;默認= true)

10. viz.pie:繪制餅圖

X = np.asarray([19, 26, 55])
viz.pie(
    X=X,
    opts=dict(legend=[Residential, Non-Residential, Utility])
)

11. viz.mesh:繪制網格圖

x = [0, 0, 1, 1, 0, 0, 1, 1]
y = [0, 1, 1, 0, 0, 1, 1, 0]
z = [0, 0, 0, 0, 1, 1, 1, 1]
X = np.c_[x, y, z]
i = [7, 0, 0, 0, 4, 4, 6, 6, 4, 0, 3, 2]
j = [3, 4, 1, 2, 5, 6, 5, 2, 0, 1, 6, 3]
k = [0, 7, 2, 3, 6, 7, 1, 1, 5, 5, 7, 6]
Y = np.c_[i, j, k]
viz.mesh(X=X, Y=Y, opts=dict(opacity=0.5))

可選參數:

  • opts.color:color(string)
  • opts.opacity:多邊形不透明度(number介於0和1之間)

技術分享圖片

矢量場至網格圖實例:(左至右,上至下)

12. vis.line:繪制線條

viz.line(Y=np.random.rand(10), opts=dict(showlegend=True))

Y = np.linspace(-5, 5, 100)
viz.line(
    Y=np.column_stack((Y * Y, np.sqrt(Y + 5))),
    X=np.column_stack((Y, Y)),
    opts=dict(markers=False),
)

可選參數:

  • opts.fillarea :填充行(boolean)以下的區域
  • opts.colormap :colormap(string; default = ‘Viridis‘)
  • opts.markers :show markers(boolean; default = false)
  • opts.markersymbol:標誌符號(string;默認= ‘dot‘)
  • opts.markersize :標記大小(number;默認= ‘10‘)
  • opts.legend :table包含圖例名稱

更新可選參數:

技術分享圖片
# line updates
win = viz.line(
    X=np.column_stack((np.arange(0, 10), np.arange(0, 10))),
    Y=np.column_stack((np.linspace(5, 10, 10),
                       np.linspace(5, 10, 10) + 5)),
)
viz.line(
    X=np.column_stack((np.arange(10, 20), np.arange(10, 20))),
    Y=np.column_stack((np.linspace(5, 10, 10),
                       np.linspace(5, 10, 10) + 5)),
    win=win,
    update=append
)
viz.line(
    X=np.arange(21, 30),
    Y=np.arange(1, 10),
    win=win,
    name=2,
    update=append
)
viz.line(
    X=np.arange(1, 10),
    Y=np.arange(11, 20),
    win=win,
    name=delete this,
    update=append
)
viz.line(
    X=np.arange(1, 10),
    Y=np.arange(11, 20),
    win=win,
    name=4,
    update=insert
)
View Code

技術分享圖片

附:通用可選參數:

  • opts.title :圖標題
  • opts.width :圖寬度
  • opts.height :身高
  • opts.showlegend :顯示圖例(true或false)
  • opts.xtype :x軸的類型(‘linear‘或‘log‘)
  • opts.xlabel :x軸的標簽
  • opts.xtick :在x軸上顯示刻度(boolean)
  • opts.xtickmin :先在x軸上打勾(number)
  • opts.xtickmax :在x軸上的最後一個勾號(number)
  • opts.xtickvals :在x軸(蜱位置table的number多個)
  • opts.xticklabels:蜱上x軸(標簽table的string多個)
  • opts.xtickstep :x軸上的滴答聲之間的距離(number)
  • opts.ytype :y軸的類型(‘linear‘或‘log‘)
  • opts.ylabel :y軸的標簽
  • opts.ytick :在y軸上顯示刻度(boolean)
  • opts.ytickmin :首先在y軸上打勾(number)
  • opts.ytickmax :最後在y軸上打勾(number)
  • opts.ytickvals :在y軸的刻度位置(table的number多個)
  • opts.yticklabels:蜱上y軸標簽(table的string多個)
  • opts.ytickstep :Y軸上的刻度之間的距離(number)
  • opts.marginleft :左邊距(以像素為單位)
  • opts.marginright :右邊距(以像素為單位)
  • opts.margintop :頂部邊距(以像素為單位)
  • opts.marginbottom:底部邊距(以像素為單位)

Pytorch Visdom