Pytorch Visdom
fb官方的一些demo
一. show something
1. vis.image:顯示一張圖片
viz.image( np.random.rand(3, 512, 256), opts=dict(title=‘Random!‘, caption=‘How random.‘), )
opts.jpgquality
:JPG
質量(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.jpgquality
:JPG
質量(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