1. 程式人生 > >Pytorch使用tensorboardX視覺化。超詳細!!!

Pytorch使用tensorboardX視覺化。超詳細!!!

1 引言

  我們都知道tensorflow框架可以使用tensorboard這一高階的視覺化的工具,為了使用tensorboard這一套完美的視覺化工具,未免可以將其應用到Pytorch中,用於Pytorch的視覺化。這裡特別感謝Github上的解決方案: https://github.com/lanpa/tensorboardX。
  本文主要是針對該解決方案提供一些介紹。
 TensorboardX支援scalar, image, figure, histogram, audio, text, graph, onnx_graph, embedding, pr_curve and videosummaries等不同的視覺化展示方式,具體介紹移步至專案Github 觀看詳情。

2 環境安裝

本教程程式碼環境依賴:

python 3.6+

Pytorch 0.4.0+

tensorboardX: pip install tensorboardX、pip install tensorflow

3 程式碼教程

   TensorboardX可以提供中很多的視覺化方式,本文主要介紹scalar 和 graph,其他型別相似。

3.1 scalar教程

在這裡插入圖片描述
對上述程式碼進行解釋,首先匯入:from tensorboardXimport SummaryWriter,然後定義一個SummaryWriter() 例項。在SummaryWriter()上滑鼠ctrl+b我們可以看到SummaryWriter()的引數為:def init

(self, log_dir=None, comment=’’, **kwargs): 其中log_dir為生成的檔案所放的目錄,comment為檔名稱。預設目錄為生成runs資料夾目錄。我們執行上述程式碼:生成結果為:
在這裡插入圖片描述

當我們為SummaryWriter(comment=‘base_scalar’)。生成結果為:

在這裡插入圖片描述
當我們為SummaryWriter(log_dir=‘scalar’) 新增log_dir引數,可以看到第二條資料的檔名稱包括了base_scalar值。生成結果目錄為:
在這裡插入圖片描述
接著解釋writer.add_scalar(‘scalar/test’, np.random.rand(), epoch),這句程式碼的作用就是,將我們所需要的資料儲存在檔案裡面供視覺化使用。 這裡是Scalar型別,所以使用writer.add_scalar(),其他的隊形使用對應的函式。第一個引數可以簡單理解為儲存圖的名稱,第二個引數是可以理解為X軸資料,第三個引數可以理解為Y軸資料(此處理解若不合理,請批評指正)。當X軸資料不止一個時,可以使用writer.add_scalars().執行程式碼之後生成檔案之後,我們在runs同級目錄下使用命令列:tensorboard --logdir runs. 當SummaryWriter(log_dir=‘scalar’)的log_dir的引數值 存在時,將tensorboard --logdir runs 改為 tensorboard --logdir 引數值
在這裡插入圖片描述


最後呼叫writer.close()。
點選連結即可看到我們的最終需要的視覺化結果。
在這裡插入圖片描述
可以分別點選對應的圖片檢視詳情。可以看到生成的Scalar名稱為’scalar/test’與’scalar/test’一致。注:可以使用左下角的檔案選擇你想顯示的某個或者全部圖片。

3.2 Graph教程

在這裡插入圖片描述
02_graph_model.py 程式碼
首先我們定義一個神經網路取名為Net1。然後將其新增到tensorboard可是視覺化中。
with SummaryWriter(comment=‘Net1’)as w:
w.add_graph(model, (dummy_input,))
我們重點關注最後兩句話,其中使用了python的上下文管理,with 語句,可以避免因w.close未寫造成的問題。推薦使用此方式。
因為這是一個神經網路架構,所以使用 w.add_graph(model, (dummy_input,)),其中第一個引數為需要儲存的模型,第二個引數為輸入值,元祖型別。開啟tensorvboard控制檯,可得到如下結果。
在這裡插入圖片描述

    點選Net1部分可以將其網路展開,檢視網路內部構造。

在這裡插入圖片描述
模型視覺化結果
其他部分可以繼續一次展開檢視詳情。

3.3 網路訓練綜合教程

    解釋完上述兩部分知識之後,我們可以綜合運用上述兩部分內容,實現線性擬合的訓練過程中的loss視覺化和模型的儲存。

在這裡插入圖片描述
我們將執行過程中loss和model分別儲存,最後開啟tensorboard控制檯,可以得到模型結果和loss的結果為下圖.
在這裡插入圖片描述

模型視覺化結果
注:不同的graph的視覺化可以使用上圖Run旁邊的下拉框選擇。

在這裡插入圖片描述
loss視覺化結果

3.4 Tensorboard綜合Demo

    本Demo程式碼為TensorboardX提供的官方Demo程式碼。

在這裡插入圖片描述

demo.py
最終執行的所有視覺化結果為:
在這裡插入圖片描述
最終視覺化結果

4 結束語

    本文是我寫的第一篇比較完整的文章,大家如果覺得幫助到了你,幫忙點個讚唄。
    本文所有的程式碼連結為:[https://github.com/miaoshuyu/pytorch-tensorboardx-visualization](https://github.com/miaoshuyu/pytorch-tensorboardx-visualization)
    (對你有用的話,麻煩點個小星星唄)
    若轉載,請標明出處,謝謝!!