Posted on

使用Tensorboard來觀察模型效能

Tensorboard介紹

在機器學習中,要改進模型的某些參數,通常需要觀察模型數據以進行衡量。TensorBoard 是用於提供機器學習工作流期間所需測量和呈現的工具。它使您能夠跟踪實驗指標(例如損失和準確率),呈現模型計算圖,將嵌入向量投影到較低維度的空間等。

TensorBoard是TensorFlow的可視化工具,用於可視化和分析機器學習實驗的結果。它提供了一組豐富的可視化面板,可以幫助您理解、調節測試和優化訓練過程中的模型。

主要功能和用途

以下是TensorBoard的一些主要功能和用途:

  1. Scalar Dashboard(標量儀表板):顯示訓練過程中的標量指標,如損失函數、準確率、學習率等。您可以隨時跟踪這些指標間的變化,並比較不同實驗之間的結果。
  2. Graph Dashboard(圖形儀表板):顯示模型的計算圖,可視化網絡結構和層之間的連接。這有助於理解和調試模型的結構,查看各層的輸入輸出形狀。
  3. 直方圖儀表板(直方圖儀表板):顯示權重、加權和激活函數的分配情況。這用於觀察參數隨時間的變化、檢測梯度消失或突然爆炸等問題很有幫助。
  4. Image Dashboard(圖像儀表板):可視化輸入圖像、模型生成的圖像或模型層輸出的特徵圖等。這對於在圖像數據中觀察模型上的表現和理解卷積網絡中的特徵提取過程非常有用。
  5. Embedding Dashboard(嵌入儀表板):用於可視化高維嵌入空間中的數據。您可以在三維空間中探索和比較嵌入向量,以及在嵌入空間中相似的樣本。
  6. Projector Dashboard(投影儀表板):提供了一種交互式的界面,可以在高維空間中對數據進行探索和分析。您可以通過選擇和過濾樣本、聚類分析和降維等操作來理解數據集的結構。

TensorBoard 提供了一種觀察的方式來監視和分析機器學習模型,以了解模型的行為並進行調優。您可以使用 TensorFlow 的相關API(如)將數據寫入TensorBoard日誌文件,然後在命令tf.summary中行中運行 TensorBoard 來查看和分析結果。

如何使用

以下為一個範例程式

import tensorflow as tf
import datetime

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
  ])

model = create_model()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
# 設定log的資料夾
log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
# 設定tensorboard的callback
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

model.fit(x=x_train, 
          y=y_train, 
          epochs=5, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])

接著就可以在所指定的資料夾位置運行tensorboard介面

tensorboard --logdir logs/fit

接著開啟http://localhost:6006就可以看到如下畫面,這個畫面是Scalars,顯示損失和指標在每個時期如何變化

Graphs用以可視化模型。可以看出你的模型是如何建構的,有用到那些方法

Distributions是顯示張量隨時間的分佈。DistributionsHistograms這兩頁很相似,可了解模型權重隨時間的變化,作為判斷是否出現問題的初步衡量標準。

Histograms是使用Ridgeline plot來顯示張量隨時間的分佈,橫軸為epochs訓練的次數,縱軸則為權重和偏差的值

Time-Seriesscalars非常相似,都是在評估準確度。然而,一個區別是每次訓練迭代而不是每個時期對目標指標的觀察。