天天看點

pytorch tensorboard_Pytorch下的tensorboard可視化

Tensorboard

安裝

原本是tensorflow的可視化工具,pytorch從1.2.0開始支援tensorboard。之前的版本也可以使用tensorboardX代替。

在使用1.2.0版本以上的PyTorch的情況下,一般來說,直接使用pip安裝即可。

pip install tensorboard
           

這樣直接安裝之後,

有可能

打開的tensorboard網頁是全白的,如果有這種問題,解決方法是解除安裝之後安裝更低版本的tensorboard。

pip uninstall tensorboard
pip install tensorboard==2.0.2
           

Tensorboard的使用邏輯

Tensorboard的工作流程簡單來說是

  • 将代碼運作過程中的,某些你關心的資料儲存在一個 檔案夾 中:
這一步由代碼中的writer完成
           
  • 再讀取這個 檔案夾 中的資料,用浏覽器顯示出來:
這一步通過在指令行運作tensorboard完成。
           

代碼體中要做的事

首先導入tensorboard

from torch.utils.tensorboard import SummaryWriter
           

這裡的SummaryWriter的作用就是,将資料以特定的格式存儲到剛剛提到的那個

檔案夾

中。

首先我們将其執行個體化

writer = SummaryWriter('./path/to/log')
           

這裡傳入的參數就是指向檔案夾的路徑,之後我們使用這個writer對象“拿出來”的任何資料都儲存在這個路徑之下。

這個對象包含多個方法,比如針對數值,我們可以調用

writer.add_scalar(tag, scalar_value, global_step=None, walltime=None)
           

這裡的tag指定可視化時這個變量的名字,scalar_value是你要存的值,global_step可以了解為x軸坐标。

舉一個簡單的例子:

for epoch in range(100)
    mAP = eval(model)
    writer.add_scalar('mAP', mAP, epoch)
           

這樣就會生成一個x軸跨度為100的折線圖,y軸坐标代表着每一個epoch的mAP。這個折線圖會儲存在指定的路徑下(但是現在還看不到)

同理,除了數值,我們可能還會想看到模型訓練過程中的圖像。

writer.add_image(tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')
 writer.add_images(tag, img_tensor, global_step=None, walltime=None, dataformats='NCHW')
           

可視化

我們已經将關心的資料拿出來了,接下來我們隻需要在指令行運作:

tensorboard --logdir=./path/to/the/folder --port 8123
           

然後打開浏覽器,通路位址http://localhost:8123/即可。這裡的8123隻是随便一個例子,用其他的未被占用端口也沒有任何問題,注意指令行的端口與浏覽器通路的位址同步。

如果發現不顯示資料,注意檢查一下路徑是否正确,指令行這裡注意是

--logdir=./path/to/the/folder
           

而不是

--logdir= './path/to/the/folder '
           

另一點要注意的是tensorboard并不是實時顯示(visdom是完全實時的),而是預設30秒重新整理一次

遠端連接配接伺服器時使用tensorboard

具體做法是當你用xshell建立好連接配接後,點選下圖紅框中的屬性按鈕

pytorch tensorboard_Pytorch下的tensorboard可視化

然後點選屬性中的SSH下的隧道,得到如下界面

pytorch tensorboard_Pytorch下的tensorboard可視化

點選添加:

pytorch tensorboard_Pytorch下的tensorboard可視化

将偵聽端口改為16006(當然也可以是其他的,就是本機的端口),目标主機和源主機保持localhost不變,目标端口就是伺服器上打開tensorboard對應的端口6006然後點選确定之後,就建立好了伺服器端口16006與自己電腦端口6006的轉發。然後按之前的步驟打開tensorboard,在本地浏覽器中輸入127.0.0.1:16006或者localhost:16006就可以通路到伺服器上的tensorboard的資訊了

詳細教程見:

torch.utils.tensorboard - PyTorch master documentation​pytorch.org

pytorch tensorboard_Pytorch下的tensorboard可視化