Pytorch用Tensorboard來觀察數據

上一章講數據的處理,這一章講數據處理之後呈現的結果,即你有可能看到Loss的走向等,這樣方便我們調試代碼。

1.Tensorboard

有兩個常用的方法:

  • 一個是add_scalar()顯:示曲線
  • 一個是add_image()顯示圖像

首先安裝Tensorboard

在你的編譯環境(conda activate XXX)中輸入命令

pip install tensorboard

1.使用add_scalar()輸入代碼

from torch.utils.tensorboard import SummaryWriter #調包

writer = SummaryWriter('logs') # 這裡你創建瞭一個logs的文件裝你的add_scalar生成的曲線,
#其中writer.add_scalar()第一個量是曲線的名字, 
#第二個量是縱坐標scalar_value,第三個量是橫坐標global_step(也可以理解為損失值得步長)
for i in range(100):
    writer.add_scalar("quadratic", i ** 2, i)

writer.close()

打開這個Tensorboard文件

tensorboard --logdir=logs
#1.這個logdir的文件名必須要與之前所創建的文件名一致,不然很容易報錯,No dashboards are active for the current data set.
#2.這個tensorboard輸入的命令,必須是在logs文件的上一層文件中,不然也很容易報錯,No dashboards are active for the current data set.

結果現實:

在這裡插入圖片描述

2.使用add_image()輸入代碼

註意:add_image()中函數一般有三個量:
第一個是圖像的名字,第二個是圖像(必須是tensor或者numpy.ndarray),第三個是步長(可理解為訓練或者測試階段到哪幅圖像瞭);
其中,圖像的shape必須是CHW,但是有opencv讀取的圖像shape是HWC,
所以得使用dataformats轉換以下將圖像的shape轉換為HWC

下面的代碼測試瞭兩張圖(一張是來自aligned的圖像,一張是來自original的圖像)用來模擬訓練或者測試階段程序運行到哪張圖

from torch.utils.tensorboard import SummaryWriter
import cv2

writer = SummaryWriter('logs')
aligned_img_path = "D:\\data\\basic\\Image\\aligned\\test_0001_aligned.jpg"
original_img_path = "D:\\data\\basic\\Image\\original\\test_0001.jpg"
aligned_img = cv2.imread(aligned_img_path)
original_img = cv2.imread(original_img_path)
print(type(aligned_img)) # numpy
print(aligned_img.shape)
# writer.add_image("img", aligned_img, 1, dataformats='HWC') #此圖已經在我第一次測試add_image()用過瞭
writer.add_image("img", original_img, 2, dataformats='HWC')#此圖是我在第二個測試
writer.close()

實現結果:

tensorboard中出現瞭IMAGES,並且step1是aligned的圖,而step2是original的圖

在這裡插入圖片描述

在這裡插入圖片描述

到此這篇關於Pytorch用Tensorboard來觀察數據的文章就介紹到這瞭,更多相關Pytorch使用Tensorboard內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: