1、pytorch與tensorboard結合使用
Tensorboard
Tensorboard通常都是做爲tf的可視化工具,與tf深度集成,它可以展示tf的網絡計算圖,繪製圖像生成的定量指標圖以及附加數據等。此外,Tensorboard也是一個獨立工具,只要保存的數據遵循必定的格式,Tensorboard就能夠讀取這些數據並進行可視化
Tensorboard_logger
Tensorboard_logger是TeamHGMemex開發的一款輕量級工具,它將Tensorboard的工具抽取出來,使得非tf用戶也可使用它進行可視化,不過功能有限,但一些經常使用的仍是能夠支持。
安裝
1.安裝tensorflow:
建議安裝cpu-onlu版本(由於本人pytorch安裝的是GPU版本,避免在同一個虛擬環境下包衝突),能夠選擇直接pip安裝
2.安裝tensorboard_logger:
安裝十分簡單,能夠經過 pip install tensorboard_logger 命令直接安裝
如何使用
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.查看結果
2、visdom
基本概念
Visdom有一些簡單的特性,咱們能夠根據這個特性來構建屬於本身的特定的例程(use-cases)。
①Panes(窗格)
當你剛剛打開UI會發現,這是個白板,只有一片藍色,別的啥都沒有…。咱們能夠用圖形、圖像和文本填充它。
注意,
不管是文本仍是圖像、視頻,都須要放在一個叫作pane的container裏面,你能夠對這些pane(窗口)拖拽,縮放以及刪除。
其中,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下跟輸入的圖像名字匹配的圖像
總結:
明確幾個名詞:
使用Visdom就是在env中的pane上畫圖
區別參數env和win:
- env是Visdom的參數,指定環境的名字,默認有個叫main的環境
- win(和opts)是vis中幾乎全部函數都有的參數,指定pane的名字,建議每次操做都指定win
補充:
- opts用來可視化設置,接收一個字典。通用的一些配置:主要用於設置pane的顯示格式
options.title
options.xlabel
options.ylabel
options.width
1.指定參數 update=‘append’
2.使用vis.updateTrace方法更新圖
安裝(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)))
上述代碼運行後,打開瀏覽器,輸入:html
看看結果怎麼樣前端
再試一下其餘代碼:
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)'})
可視化接口
儘管大多數API 的輸入包含,一個tensor X(保存數據)和一個可選的tensor Y(保存標籤或者時間戳)。
全部的繪圖函數都接收一個可選參數win,用來將圖畫到一個特定的pane上。每一個繪圖函數也會返回當前繪圖的win。您也能夠指定 匯出的圖添加到哪一個env上。
三個經常使用到的函數以下:
line:
這個函數用來畫 線圖。記錄標量的變化如:損失、準確率。它須要一個形狀爲N或者N×M的tensor Y,用來指定 M條線的值(每條線上有N個點)。和一個可供選擇的 tensor X 用來指定對應的 x軸的值; X能夠是一個長度爲N的tensor(這種狀況下,M條線共享同一個 x軸),也能夠是形狀和Y同樣的tensor。
The following options are supported:
options.fillarea : 填充線下面的區域 (boolean)
options.colormap : 色圖 (string; default = 'Viridis')
options.markers : 顯示點標記 (boolean; default = false)
options.markersymbol: 標記的形狀 (string; default = 'dot')
options.markersize : 標記的大小 (number; default = '10')
options.legend : 保存圖例名字的 table
image:
這個函數用來畫 圖片。能夠是輸入的圖片、GAN生成的圖片、卷積核的信息
輸入:
img(tensor): shape(C*H*W)。
支持下面特定選項:
options.jpgquality: JPG quality (number 0-100; default = 100)
import torch as t import visdom as vis v=vis.Visdom() #可視化一張隨機的黑白圖片 v.image(t.randn(64,64),win='random1’) #可視化一張隨機的彩色圖片 v.image(t.randn(3,64,64),win='random2’) #可視化36張隨機彩色圖片,每一張6行 v.images( t.randn(36,3,64,64).numpy(), nrow=6, win='rnadom3', opts={'title':'random_img'})
text:
此函數可在文本框中打印文本。輸入輸入一個text字符串。目前不支持特定的options. python
該函數支持全部的html標籤,也遵循語法標準,換行要使用<br>json
剩下的之後再補充。。。windows
原文出處:https://www.cnblogs.com/yh-blog/p/12345170.html後端