用PyTorch做機器學習時用tensorboardX來確認過程的正確性真是再好不過惹

===原文 照翻===

訓練某個模型的時候,我們常常需要損失函數的值(loss)有沒有順利的下降。這時有許多的工具可以選擇,我測試了這幾個工具並列出他們各自的優點。結論就是本文的標題。

tensorboardX: https://github.com/lanpa/tensorboard-pytorch

選項

首先,我試過的方法有

  1. 訓練過程中啥都不管。(訓練完成後用matplotlib畫出 loss 以及 accuracy。)
  2. print(loss) 直接把每個iteration 的 loss 印在螢幕上,用眼睛看。
  3. (jupyter notebook 的場合)bokeh 有一個 Notebook Handles 的功能,可以把每個 iteration 的loss 畫出來 (個人認為就是 1+2 的結果)
  4. 每隔幾個適當的 iteration,把產生的結果(聲音/影像)存檔。到時候再來看。
  5. tensorboard_logger 紀錄資料、用 tensorboard 確認訓練過程
  6. tensorboardX 紀錄資料、用 tensorboard 確認訓練過程

我來寫一下我用這些方法的感想:(這裡翻譯的時候看不懂上下文的關係,後來才發現是要對照上一段的數字

  1. 訓練要花上幾天的話是非常沒有效率的。如果只要幾分鐘或是幾小時,這樣做也無妨。(訓練過程中啥都不管的佛系訓練法)
  2. 有圖有真相,可以的話就把數字畫成圖吧。
  3. 使用 Notebook 的情況而且預估訓練的要花上的時間不久的話這樣做也OK。但是隨著圖表中的資料增加資料量會變得很恐怖。
  4. 這個方法(直接存圖)很方便。到時候也可以把這些圖組成 gif 檔。
  5. 還不錯用、用了幾個月沒什麼不滿意的。但是、只有 tensorboard 的一部分功能有實作。
  6. 前面5種方法的缺點都解決了、想當然的可以紀錄 loss、圖片、聲音、embedding。讚。

總結

https://github.com/lanpa/tensorboard-pytorch 蠻不錯的、PyTorch 使用者需要觀察訓練模型的過程的時候就試試看吧?

後記

雖然自己沒實際試過,但是讀了程式碼之後發現 chainer的名字 、說不定chainer也可以用。