【文件學習】tensorboardX——summary writer

ShuqiaoS發表於2019-03-14

本文記錄了博主學習tensorboardX的summary writer模組的筆記,官方文件。更新於2019.03.21。

什麼是tensorboard X

tensorboardX是一個用tensorboard的視覺模組。由於用tensorboard命名會產生歧義,因此作者將其命名為tensorboardX(本來想取名tensorboard-pytorch的),意味著用於X的tensorboard。

Google的tensorflow中的tensorboard是一個用於服務神經網路訓練過程視覺化的網路伺服器(web server),其可以實現標量值、影象、文字等的視覺化。這些資訊在tensorflow中是以event的形式儲存的。這個包的作用是讓使用者可以通過簡單的介面用PyTorch獲取events,並且在tensorboard中顯示。目前,這個包支援標量、圖片、音訊、直方圖、文字、嵌入(embedding)和反向傳播的路線。手冊中的內容在Ubuntu和Mac系統下測試過,用的環境是anaconda的python2和python3。

建立一個summary writer

在載入內容之前,我們需要建立一個writer instance,可以通過下面的方法實現:

from tensorboardX import SummaryWriter
#SummaryWriter壓縮(包括)了所有內容
writer = SummaryWriter('runs/exp-1')
#建立writer object,log會被存入'runs/exp-1'
writer2 = SummaryWriter()
#用自動生成的檔名,資料夾類似'runs/Aug20-17-20-33'
writer3 = SummaryWriter(comment='3x learning rate')
#用自動生成的檔名建立writer3 object,註釋(comment)會被加在檔名的後面。資料夾類似 'runs/Aug20-17-20-33-3xlearning rate'

每個子資料夾在tensorboard中都會被視作是不同的試驗(experiments)。每次用不同設定再次執行一個experiment的時候,我們需要修改子資料夾的名稱(比如runs/exp2runs/myexp等),如此就可以輕鬆比較不同試驗設定了。輸入tensorboard runs在tensorboard中比較不同的runs。

Add Scalar

標量值是最容易處理的資料型別了。通常,我們會儲存每次訓練步驟下的損失值,或每個epoch下的正確率,有時也會儲存對應的學習率。儲存標量值的成本是很低的,只需要log下任何你認為重要的東西就可以了。可以用這個命令writer.add_scalar('myscalar', value, iteration)來記錄(log)一個標量值。需要注意的是,如果給程式輸入一個PyTorch tensor是不可以的,如果x是一個torch scalar tensor,要記得用x.item()提取標量值。

相關文章