visdom可視化pytorch訓練過程


一、前言

  在深度學習模型訓練的過程中,常常需要實時監聽並可視化一些數據,如損失值loss,正確率acc等。在Tensorflow中,最常使用的工具非Tensorboard莫屬;在Pytorch中,也有類似的TensorboardX,但據說其在張量數據加載的效率方面不如visdom。visdom是FaceBook開發的一款可視化工具,其實質是一款在網頁端的web服務器,對Pytorch的支持較好。

二、安裝和啟動

  visdom的安裝比較簡單,可以直接使用pip命令。

# visdom 安裝指令
pip install visdom

   執行安裝命令后,可以執行以下命令啟動visdom。

# 啟動 visdom web服務器
python -m visdom.server

  若安裝成功,則會返回一個網頁地址;若報錯,則安裝失敗,可以自行去github上下載源碼安裝。

 

  將網址復制后在瀏覽器中打開,就可以看到visdom的主界面。

遠程連接本地可視化

1. 連接ssh時,將服務器的8097端口重定向到自己機器上來:

ssh -L 18097:127.0.0.1:8097 username@remote_server_ip(一定要在本地dos窗口輸入,不要在xshell里面輸入) 

其中:18097:127.0.0.1代表自己機器上的18097號端口,8097是服務器上visdom使用的端口。

2. 在服務器上使用8097端口正常啟動tensorboard:

python -m visdom.server

3. 在本地瀏覽器中輸入地址:

127.0.0.1:18097


作者:kyle0x54
鏈接:https://www.jianshu.com/p/41d4ca00f4f3
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

三、簡單使用

  這里以監聽損失值loss數據,准確率acc數據及可視化圖像等方面簡要介紹visdom的使用。

3.1 監聽單一數據loss

  在模型訓練過程中,loss是最常監聽的數據,這里就以loss的監聽為例,使用visdom可視化loss的變化過程。為了使代碼更加簡潔,這里以for循環代替模型逐輪訓練的過程,loss值則在每個循環內部隨機產生。

復制代碼
from visdom import Visdom
import numpy as np
import time

# 將窗口類實例化
viz = Visdom() 

# 創建窗口並初始化
viz.line([0.], [0], win='train_loss', opts=dict(title='train_loss'))

for global_steps in range(10):
    # 隨機獲取loss值
    loss = 0.2 * np.random.randn() + 1
    # 更新窗口圖像
    viz.line([loss], [global_steps], win='train_loss', update='append')
    time.sleep(0.5)
復制代碼

 

3.2 同時監聽loss和acc

復制代碼
from visdom import Visdom
import numpy as np
import time

# 將窗口類實例化
viz = Visdom() 

# 創建窗口並初始化
viz.line([[0.,0.]], [0], win='train', opts=dict(title='loss&acc', legend=['loss', 'acc']))
for global_steps in range(10):
    # 隨機獲取loss和acc
    loss = 0.1 * np.random.randn() + 1
    acc = 0.1 * np.random.randn() + 0.5
    # 更新窗口圖像
    viz.line([[loss, acc]], [global_steps], win='train', update='append')
    # 延時0.5s
    time.sleep(0.5)
復制代碼

 

3.3 可視化圖像

  在處理圖像任務時,還可以用visdom對圖像進行可視化。

復制代碼
from visdom import Visdom
import numpy as np
import cv2
import torch

# 使用opencv讀取數據
img = cv2.imread('pkq.jpg')
# opencv按照BGR讀取,而visdom默認按照RGB顯示,因此要進行通道轉換
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# visdom類似於pytorch中的卷積模型,接收的數據都要求通道數在前
img = np.transpose(img, (2, 0, 1))
img = torch.from_numpy(img)
# 可視化圖像
viz.image(img, win='pkq')
復制代碼

  visdom可以同時在主面板中打開多個窗口,執行上面3個可視化程序后,主面板如下所示:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM