TensorBoard 的簡介與快速上手
在之前的學習之中,我們已經對整個機器學習的結構有了一個大致的了解,但是我們在查看訓練結果的時候只采用了兩種可視化方法:
- 使用 print 或者 log 來打印出一些日志與結果;
- 使用 pyplot 來進行運行結果的可視化。
這兩種結果各有優劣,第一種方法比較快速,能夠在訓練的時候直接查看,但是卻不夠直觀;而第二種方法能夠很直觀的看到變化,但是卻只能在訓練結束后查看。有沒有一種更好的方法來做到實時的、快速地、直觀的查看呢?
那就是接下來幾節課我們要學習的可視化工具 —— TensorBoard 。
1. 什么是 TensorBoard
TensorBoard 是一個工具包,它提供機器學習實驗所需的可視化功能和工具。
值得注意的是,這里并沒有明確說明要使用 TensorFlow 框架才能使用 TensorBoard 才能進行可視化工作。因此在實際中,很多的其他框架之中都內置了 TensorBoard 的工具,比如 PyTorch 等??傮w而言,TensorBoard 是一個通用的,高效率的可視化工具。
具體而言,TensorBoard 可以實現以下的功能:
- 對準確率、訓練損失等參數進行可視化工作;
- 對模型的架構進行可視化工作;
- 對文本、圖片、音頻等媒體數據進行顯示;
- 查看權重、偏差的直方圖;
- 等等。
在這里,結合我們之前的訓練例子,我們會更多地對前三點應用進行講解。
2. TensorBoard 的安裝
一般情況下,當你安裝 TensorFlow 的時候,已經默認幫你安裝了 TensorBoard ,你只需要直接使用即可。但是也不排除某些特殊情況導致沒有一起安裝的情況。
2.1 使用 PIP 安裝
使用 PIP 安裝比較簡單,直接運行以下命令即可:
pip install TensorBoard
如果網絡連接失敗,可以參考以前的 TensorFlow 安裝教程進行鏡像的更換。
2.2 使用 Anaconda 安裝
如果有些同學是在 Anaconda 環境中進行的操作,那么推薦使用 Anaconda 命令進行安裝:
conda install TensorBoard
通過這樣的操作,我們就完成了 TensorBoard 的安裝工作。
3. TensorBoard 的快速上手使用
既然已經安裝了 TensorBoard ,那么接下來我們便來看一下如何快速上手使用 TensorBoard 。
在這里,我們并不會進行更加深入的學習,也不會記錄過于復雜的數據,這一節的目的是讓大家對 TensorBoard 的整體使用流程有一個大致的了解。
首先,我們編寫一段很平常的 Mnist 數據集的識別程序:
首先,我們進行數據集的獲取與模型的構建:
import tensorflow as tf
(x_train, y_train),(x_test, y_test) = tf.keras.datasets.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(256, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
model = create_model()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
這是一個非常簡單的線性程序,并且我們在模型編譯的過程之中,指定記錄的指標包括準確率(accuracy)。
然后我們進行模型的訓練,同時進行相應的記錄工作:
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir='./logs')
model.fit(x=x_train, y=y_train,
epochs=3,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback])
在這里,我們定義了一個回調,該回調是 TensorBoard 回調,該回調會在模型訓練的時候進行日志的輸出與構建工作。
在這里我們只指定了一個參數:
- logdir:用于存放日志的目錄。
在后續的學習之中,我們會陸續學習到更多的參數與使用方法。
運行程序,我們可以得到如下輸出:
Epoch 1/3
1875/1875 [==============================] - 5s 3ms/step - loss: 0.2252 - accuracy: 0.9344 - val_loss: 0.1082 - val_accuracy: 0.9684
Epoch 2/3
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0933 - accuracy: 0.9712 - val_loss: 0.1037 - val_accuracy: 0.9672
Epoch 3/3
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0622 - accuracy: 0.9807 - val_loss: 0.0705 - val_accuracy: 0.9783
<tensorflow.python.keras.callbacks.History at 0x7f5500172f98>
然后我們在當前目錄下運行終端,并且輸入命令:
tensorboard --logdir logs
其中 --logdir 的參數就是我們剛才指定的日志目錄,通過運行以上命令,我們能得到相應的輸出,通過輸出我們可以發現,我們的 TensorBoard 目前在 localhost:6006 端口運行。
在瀏覽器中打開 localhost:6006 ,我們就可以發現如下界面:
我們可以發現,該頁面一共有兩個選項卡,第一個選項卡包含了兩個圖表:
- 訓練集、測試集的準確率的圖表;
- 訓練集、測試集的 Loss 的變化的圖表。
其中第二個圖表是自動生成的,也就是說 TensorBoard 會自動記錄 Loss 變化;而第一個圖表是由我們編譯模型的時候指定的。
打開第二個選項卡,我們可以看到我們的網絡的模型:
該模型圖展示了我們的網絡模型,并且支持縮放等功能。
4. 小結
在這節課中,我們學習了什么是 TensorBoard ,同時了解了如何安裝 TensorBoard ,最后,我們通過一個具體的實例了解了 TensorBoard 的具體使用方法以及整體的流程。