visdom可視化pytorch訓練過程

1、前言

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

2、安裝和啓動

  visdom的安裝比較簡單,能夠直接使用pip命令。git

# visdom 安裝指令
pip install visdom

   執行安裝命令後,能夠執行如下命令啓動visdom。github

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

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

 

  將網址複製後在瀏覽器中打開,就能夠看到visdom的主界面。瀏覽器

3、簡單使用

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

3.1 監聽單一數據loss

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

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對圖像進行可視化。dom

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個可視化程序後,主面板以下所示:工具

相關文章
相關標籤/搜索