Keras 訓練中即時資訊顯示

前言

Keras 是個 Python 深度學習函式庫,一般常見底層是 TensorFlow
在使用 keras 時,如果要即時觀察訓練的 loss, accuracy 等參數變化,一般直接使用 TensorBoard callback,不過我發現 TensorBoard 不太符合我的需求。
我希望能更簡單的在同一張圖表上同時畫上 training loss 與 validation loss,而正好找到方便的工具 - Hualos - Keras Total Visualization project,十分符合我的需求,效果如下圖:

Hualos 運作方式

Hualos 其實是一個簡單的 webserver,keras 在 fit 等訓練函式裡加入 RemoteMonitor callback,這樣在每個 epoch 完成後,keras 就會往 Hualos 的 ip 位置傳送資訊(loss, accuracy, …),Hualos 在收到資訊後,就會即時更新網頁內容,如上圖的效果一般。

Hualos 使用方式

  1. (下載專案) 將專案 clone 至欲裝設 Hualos web server 的機器上 (由於專案有空白頁面的己知bug未修復,我暫時把程式碼修改後,放到我的GitHub帳號下,原專案請至 Hualos - Keras Total Visualization project)
    git clone https://github.com/HTLife/hualos
    
  2. (設定web server ip) hualos/api.py 第72行
    server = WSGIServer(("", 9000), app)
    
    將ip改為0.0.0.0讓外部得以連入,port 改成想用的 (如過keras是裝在docker裡,可以與tensorboard共用6006)
    server = WSGIServer(('0,0,0,0', 6006), app)
    
  3. (設定keras callback) 在keras程式碼中設定callback,ip改為上面server的ip (model.fit_generator中為避免看起來太複雜,省略了其它參數,讀者需自行設定)
     reCallBack = keras.callbacks.RemoteMonitor(root='http://123.456.789.xxx:6006', headers=None)
     ## Start training
     history_callback = model.fit_generator(...
               callbacks=[reCallBack])
    
  4. (開始訓練) 開啟網頁 http://123.456.789.xxx:6006,並在terminal執行Keras程式碼開始訓練,在第一個epoch完成後,網頁會自動更新顯示目前訓練的結果

Comments

Popular posts from this blog

Ubuntu Chrome Remote Desktop Setting

Open3D: A Modern Library for 3D Data Processing