PyTorch視覺化——tensorboard、visdom
阿新 • • 發佈:2020-02-22
一、pytorch與tensorboard結合使用
Tensorboard
Tensorboard一般都是作為tf的視覺化工具,與tf深度整合,它能夠展現tf的網路計算圖,繪製圖像生成的定量指標圖以及附加資料等。此外,Tensorboard也是一個獨立工具,只要儲存的資料遵循一定的格式,Tensorboard就可以讀取這些資料並進行視覺化- 將網路結構、動態數值以 protocol buffer 格式寫到檔案裡。
- 讀取網路結構、讀取動態數值,並展示在瀏覽器中。
Tensorboard_logger
Tensorboard_logger是TeamHGMemex開發的一款輕量級工具,它將Tensorboard的工具抽取出來,使得非tf使用者也可以使用它進行視覺化,不過功能有限,但一些常用的還是可以支援。安裝
如何使用
1.首先啟動Tensorboard,命令格式如下:tensorboard --logdir <your/running/dir> --port <your_bind_port>例如命令是:
tensorboard --logdir /home/tenyun/Documents/Githome/pytorch_home/ --port 1234
TensorBoard 1.11.0 at http://TenYun:1234(Press CTRL+C to quit)2.程式碼中使用
from tensorboard_logger import Logger # 構建logger物件,logdir用來指定log檔案的儲存路徑 # flush_secs用來指定重新整理同步間隔 logger = Logger(logdir="/home/tenyun/Documents/Githome/pytorch_home", flush_secs=2) # 模擬函式 for ii in range(100): logger.log_value('loss', 10-ii**0.5, step=ii) logger.log_value('accuracy', ii**0.5/10, step=ii)
3.檢視結果 執行以後,到瀏覽器輸入: http://localhost:1234,注意換成你繫結的埠,可以看到結果。
二、visdom
https://blog.csdn.net/g11d111/article/details/84571118基本概念
Visdom有一些簡單的特性,我們可以根據這個特性來構建屬於自己的特定的例程(use-cases)。①Panes(窗格)
當你剛剛開啟UI會發現,這是個白板,只有一片藍色,別的啥都沒有…。我們可以用圖形、影象和文字填充它。注意,無論是文字還是影象、視訊,都需要將這些內容放在一個叫做pane的container裡面,你可以對這些pzne(視窗)拖拽,縮放以及刪除。 其中,pane存在於envs,envs的 status(狀態)可以跨sessions(會話)儲存。 此外,pane還支援callbacks(回撥函式),也就是說,當你在一個pane上輸入一些內容, 如果後端寫好了對應的處理邏輯,那麼callbacks會要求Visdom物件接收前端傳來的輸入給後端的處理程式碼,並將處理後的結果返回到前端顯示,也就是pane可以支援互動~② Enviroments環境
UI的左上角,有一條這樣的東西:這是視覺化空間所在的環境(envs)——可以理解為①中pane所在的context,預設情況下,每個使用者會擁有一個叫做main的env。 如果有額外的需求,比如要在不同的環境中展示多種層次的內容,使用者可以在UI(前端)或者後端建立新的env。環境變數的狀態被長期儲存。 可以看到,我們可以在UI任意的切換不同的環境(env)。當你選擇了一個新的env,visdom將會向伺服器請求存在於該env中的影象。 在 env selector(環境選擇器)後面,有一個小的橡皮擦eraser button,使用者可以使用它來清除當前env下的所有內容。如果你的展示是動態的,也就是資料來源源不斷需要展示,那麼後續的影象會 繼續展示在此env下。③State——狀態
當你在某些env下建立了一些視覺化影象內容後,伺服器會自動快取這些視覺化結果(設定checkpoint)。如果你重新載入此頁面或者重新開啟伺服器,這些影象內容會重現的。 當然,你也可以手動的儲存這些env的狀態:- save: 可以序列化env的狀態,並以json檔案保持在磁碟中。
- fork: 當輸入一個新的名字,會複製當前的狀態到這個new env下。
④ Filter——過濾
這個功能挺容易理解的:就是根據你在filter視窗的輸入(右上角)對當前env下所有windows的title進行字串正則匹配,只顯示該env下跟輸入的影象名字匹配的影象總結:
明確幾個名詞:- env:看作一個大容器,在程式碼中是 vis=visdom.Visdom(env=''main)
- pane: 就是用於繪圖的小視窗,在程式碼中叫 window
- env是Visdom的引數,指定環境的名字,預設有個叫main的環境
- win(和opts)是vis中幾乎所有函式都有的引數,指定pane的名字,建議每次操作都指定win
- opts用來視覺化設定,接收一個字典。通用的一些配置:主要用於設定pane的顯示格式
- 避免覆蓋之前的數值:
安裝(setup)& 啟動例子(demo)
我的是python3.x,直接pip install visdom即可。 安裝後,不需要程式碼寫好,就可以在命令列裡面跑visdom。 啟動方法: python -m visdom.server 或者直接敲 visdom,剛執行的時候,會開始下載一些指令碼,需要等待一會 然後試一段程式碼:import visdom import numpy as np vis = visdom.Visdom() vis.text('Hello, world!') vis.image(np.ones((3, 10, 10)))
上述程式碼執行後,開啟瀏覽器,輸入:
http://localhost:8097
看看結果怎麼樣
再試一下其他程式碼:import torch as t import visdom as vis v=vis.Visdom(env='linetest') x=t.arange(1,30,0.01) y=t.sin(x) v.line(X=x,Y=y,win='sinx',opts={'title':'y.sin(x)'})
視覺化介面
https://blog.csdn.net/u012436149/article/details/69389610?utm_source=distribute.pc_relevant.none-task Visdom支援下列API。由Plotly提供視覺化支援。- vis.scatter : 2D 或 3D 散點圖
- vis.line : 線圖