Pytorch可視化之Visdom使用實例
一、Visdom簡介
Visdom是由Facebook公司開發(fā)的一個進(jìn)行數(shù)據(jù)可視化的Web應(yīng)用程序,支持Torch、Numpy、Pytorch這3個庫的創(chuàng)建、管理和分享實時的數(shù)據(jù)可視化結(jié)果。
二、安裝和運行
可直接使用pip進(jìn)行安裝,命令如下:
pip install visdom
安裝過程如下:
安裝完成后,運行下面的代碼啟動visdom服務(wù)器(運行需要時間,需要稍等一下;下圖中的報錯ERROR我沒有管,不影響正常運行):
python -m visdom.server
按照提示,在瀏覽器中輸入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!”。
拖拽視窗右下角箭頭處(如圖綠框處)可對視窗大小進(jìn)行縮放,拖動視窗頂部橫條(如圖紅框處)可以移動視窗。
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)
結(jié)果如下圖所示:
可以用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)
結(jié)果如下:
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')#設(shè)置環(huán)境窗口的名稱是'my_wind',如果不設(shè)置默認(rèn)為main # 2—D twoD_scatter = vis.scatter(X=torch.rand(100, 2), Y=(Y + 1.5).astype(int), # 轉(zhuǎn)換成100個1或2的整數(shù) opts=dict( legend=['Apples', 'Pears'], # 圖例名稱 xtickmin=-1, # 設(shè)置x坐標(biāo)軸下限 xtickmax=2.5, # 設(shè)置x坐標(biāo)軸上限 xtickstep=0.5, # 設(shè)置x坐標(biāo)軸間隔 ytickmin=-1, ytickmax=2.5, ytickstep=0.5, markersymbol='dot' # 設(shè)置數(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, # 標(biāo)記大小 xtickmin=0, xtickmax=2, xlabel='Arbitrary', # 標(biāo)簽 xtickvals=[0, 0.75, 1.6, 2], # 設(shè)置坐標(biāo)軸顯示值 ytickmin=0, ytickmax=2, ytickstep=0.5, ztickmin=0, ztickmax=1, ztickstep=0.5, ) )
運行結(jié)果如下圖所示:
如果想要通過程序?qū)崿F(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。
更新后結(jié)果如下圖所示:
4、繪制線條
4.1 繪制一條直線
代碼如下:
import visdom import numpy as np vis = visdom.Visdom(env='my_windows') # 設(shè)置環(huán)境窗口的名稱,如果不設(shè)置名稱就默認(rèn)為main # 繪制一條直線 x = list(range(10)) y = list(range(10)) # 使用line函數(shù)繪制直線 并選擇顯示坐標(biāo)軸 vis.line(X=np.array(x), Y=np.array(y), opts=dict(showlegend=True))
結(jié)果如圖所示:
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))
結(jié)果如圖所示:
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))
結(jié)果如圖所示:
參考文獻(xiàn)
Pytorch深度學(xué)習(xí)入門--曾芃壹
https://www.pythonf.cn/read/3068
總結(jié)
到此這篇關(guān)于Pytorch可視化之Visdom使用的文章就介紹到這了,更多相關(guān)Pytorch可視化Visdom內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實現(xiàn)讀取.nc數(shù)據(jù)并提取指定時間與經(jīng)緯度維度對應(yīng)的變量數(shù)值
這篇文章主要為大家詳細(xì)介紹了如何使用Python語言的netCDF4庫實現(xiàn)讀取.nc格式的數(shù)據(jù)文件,并提取指定維(時間、經(jīng)度與緯度)下的變量數(shù)據(jù),需要的可以了解下2024-02-02Python文件操作JSON CSV TSV Excel和Pickle文件序列化
這篇文章主要為大家介紹了Python文件操作之JSON、CSV、TSV、Excel和Pickle文件序列化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Python集成C#實現(xiàn)界面操作下載文件功能的全過程
使用腳本進(jìn)行下載的需求很常見,下面這篇文章主要給大家介紹了關(guān)于Python集成C#實現(xiàn)界面操作下載文件功能的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03Python面向?qū)ο笾惡蛯ο髮傩缘脑鰟h改查操作示例
這篇文章主要介紹了Python面向?qū)ο笾惡蛯ο髮傩缘脑鰟h改查操作,結(jié)合實例形式分析了Python面向?qū)ο笙嚓P(guān)的類與對象屬性常見操作技巧,需要的朋友可以參考下2018-12-12python實現(xiàn)企業(yè)微信定時發(fā)送文本消息的示例代碼
這篇文章主要介紹了python實現(xiàn)企業(yè)微信定時發(fā)送文本消息的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11