天天看點

TensorBoard快速入門(Pytorch使用TensorBoard)

文章目錄

  • ​​TensorBoard 簡介​​
  • ​​TensorBoard 界面介紹​​
  • ​​TensorBoard 安裝​​
  • ​​TensorBoard 運作​​
  • ​​Pytorch 使用 TensorBoard​​
  • ​​Google Colab中使用 Tensorboard​​
  • ​​Tensor折線圖(Scalars)​​

TensorBoard 簡介

​​TensorBoard​​ 是Google開發的一個機器學習可視化工具。其主要用于記錄機器學習過程,例如:

  • 記錄損失變化、準确率變化等
  • 記錄圖檔變化、語音變化、文本變化等,例如在做GAN時,可以過一段時間記錄一張生成的圖檔
  • 繪制模型

具體支援的内容可以參考​​官方文檔​​

TensorBoard 界面介紹

TensorBoard快速入門(Pytorch使用TensorBoard)

TensorBoard 安裝

直接使用pip安裝即可:

pip install      

安裝後,在指令行輸入:

tensorboard --help      

若可以正常輸出,則說明安裝成功。

TensorBoard 運作

運作啟動指令即可:

tensorboard --logdir my_log      

​my_log​

​是TensorBoard的log檔案所在的目錄。Tensorboard面闆中展示的資料都來源于log檔案,一般一次完整的運作生成一份log檔案。

例如,在Pytorch中,我們會調用new一個​

​SummaryWriter​

​​對象,此時就會建立一個log檔案,之後我們就會調用其​

​add_something​

​​方法,往log裡面寫日志,之後在TensorBoard面闆中就可以看到資料了。最後在訓練完成後,調用​

​close​

​方法結束。

若看到了如下輸出,說明啟動成功:

TensorBoard 2.8.0 at http://localhost:6006/ (Press CTRL+C to quit)      

此時隻需要在浏覽器中輸入​

​http://localhost:6006/​

​即可進入TensorBoard界面。

Pytorch 使用 TensorBoard

Pytorch使用Tensorboard主要用到了三個API:

  • ​SummaryWriter​

    ​:這個用來建立一個log檔案,TensorBoard面闆檢視時,也是需要選擇檢視那個log檔案。
  • ​add_something​

    ​​: 向log檔案裡面增添資料。例如可以通過​

    ​add_scalar​

    ​​增添折線圖資料,​

    ​add_image​

    ​可以增添圖檔。
  • ​close​

    ​​:當訓練結束後,我們可以通過​

    ​close​

    ​方法結束log寫入。

接下來,我們來模拟記錄訓練過程中準确率的變化。

首先需要new一個​

​SummaryWriter​

​對象:

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter(log_dir='runs/mock_accuracy')      

當運作完該行代碼後,可以看到目前目錄下生成了一個​

​runs/mock_accuracy​

​檔案夾,并且裡面有event日志

TensorBoard快速入門(Pytorch使用TensorBoard)

此時已經可以啟動tensorboard來檢視了:

tensorboard --logdir runs      

此時進入tensorboard頁面後,啥都看不到,因為我們還沒有向log裡面寫入任何資料:

TensorBoard快速入門(Pytorch使用TensorBoard)

接下來使用 ​

​add_scalar​

​ 繪制準确率折線圖:

for i in range(100):
    writer.add_scalar(tag="accuracy", # 可以暫時了解為圖像的名字
                      scalar_value=i * random.uniform(0.8, 1),  # 縱坐标的值
                      global_step=i  # 目前是第幾次疊代,可以了解為橫坐标的值
                      )
    time.sleep(2 * random.uniform(0.5, 1.5))      

這裡模拟 1~3 秒完成一次疊代并計算準确率,然後将準确率增添到 accuracy 這個圖下面。

過一會後,我們重新整理頁面,就可以看到我們的準确率變化曲線了:

TensorBoard快速入門(Pytorch使用TensorBoard)

由于資料還在寫入,是以曲線還在不斷變化。

Google Colab中使用 Tensorboard

在Google Colab中使用Tensorboard隻需要兩行指令:

%load_ext tensorboard # 加載tensorboard擴充插件
%tensorboard --logdir=runs  # 運作tensorboard      

在運作完tensorboard後,在該單元格下面就會出現tensorboard頁面:

TensorBoard快速入門(Pytorch使用TensorBoard)

之後就和之前一樣使用​

​writer​

​寫入資料即可,然後手動點選

TensorBoard快速入門(Pytorch使用TensorBoard)

按鈕即可,或者使用

TensorBoard快速入門(Pytorch使用TensorBoard)

按鈕開啟自動重新整理。

TensorBoard快速入門(Pytorch使用TensorBoard)
在Google Colab中不像本地那樣重新整理那麼快,即使手動點重新整理按鈕也不行,我自己測試下來,大概1分鐘才能真正更新一次資料。

Tensor折線圖(Scalars)