PyTorch学习笔记(13)——强力的可视化工具visdom
今天,讓我們來放松一下大腦,學習點輕松的東西————可視化工具Visdom,它可以讓我們在使用PyTorch訓練模型的時候,可視化中間的訓練情況,無論是loss變化還是中間結果比較。相比干呆呆的瞪著命令行,Visdom讓我們的調參之路變得更加生動和活潑了.~
0. 前言
對于一些任務,尤其是難以收斂以及情況復雜的,如果在訓練過程中,實時可視化訓練情況,將會讓我們對訓練手段進行及時調整,更好的達到目標,避免不收斂、過擬合以及其它情況。這樣,我們就可以在訓練指標的判斷基礎上,加上感性的部分(可視化結果),從而實現雙管齊下。
Visdom 是一個由FacebookResearch開發的一個靈活的可視化工具,可用來對實時(live)——如網絡訓練中產生的結果,富數據(rich data)——如HTML,進行組織和共享。支持Torch和Numpy還有PyTorch。
Visdom 也可以實現遠程數據的可視化,對科學實驗有很大幫助。我們可以遠程的發送圖片和數據,并進行在ui界面顯示出來,檢查實驗結果,或者debug。
1. 總覽(overview)
按照官方的說法,開發Visdom的目的是使得數據(無論是在遠程還是本地)的可視化,用以支持和促進科學試驗。
Visdom aims to facilitate visualization of (remote) data with an emphasis on supporting scientific experimentation.
2. 概念(concepts)
Visdom有一些簡單的特性,我們可以根據這個特性來構建屬于自己的特定的例程(use-cases)。
① Windows——窗口
當你剛剛打開UI會發現,這是個白板,只有一片藍色,別的啥都沒有…。我們可以用圖形、圖像和文本填充它。注意,無論是文本還是圖像、視頻,都需要將這些內容放在一個叫做windows的container里面,你可以對這些windows(窗口)拖拽,縮放以及刪除。
其中,windows存在于envs,envs的**status(狀態)可以跨sessions(會話)**保存。
此外,windows還支持callbacks(回調函數),也就是說,當你在一個windows上輸入一些內容, 如果后端寫好了對應的處理邏輯,那么callbacks會要求Visdom對象接收前端傳來的輸入給后端的處理代碼,并將處理后的結果返回到前端顯示,也就是windows可以支持交互~
② Enviroments——環境
UI的左上角,有一條這樣的東西:這是可視化空間所在的環境(envs)——可以理解為①中windows所在的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下跟輸入的圖像名字匹配的圖像:
3. 安裝(setup)& 啟動例子(demo)
我用的是PyTorch 0.4.1,在Python2.7/3.x都可以。Visdom直接可以安裝在這個環境下,我的是python3.x,直接pip install visdom即可。
安裝后,不需要代碼寫好,就可以在命令行里面跑visdom。
啟動方法: python -m visdom.server或者直接敲visdom,剛執行的時候,會開始下載一些腳本,需要等待一會:
啟動起來后,寫一段測試代碼如下,叫做demo.py,執行python demo.py:
import visdom import numpy as np vis = visdom.Visdom() vis.text('Hello, world!') vis.image(np.ones((3, 10, 10)))得到結果:
4. 繪圖例子
首先,要加載一些模塊:
這里,直接上代碼,具體關于visdom的各個API的說明,請查看visdom——A flexible tool for creating, organizing, and sharing visualizations of live, rich data. Supports Torch and Numpy.
4.1 image demo
其對應的結果分別為:
和
4.2 為windows注冊callbacks
可以看到,我們可以跟這個帶callbacks的windows進行交互:
當然,也可以加載音頻和視頻啦,還有WebGL等,這里就不展開了。
5. 參考資料
[1] Visdom 可視化工具 教程 (pytorch)
[2] Visdom 官方說明 (FacebookResearch)
總結
以上是生活随笔為你收集整理的PyTorch学习笔记(13)——强力的可视化工具visdom的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: layuimini左侧菜单上方图文标题自
- 下一篇: [other] 强力删除命令