TensorBoard 的簡介與快速上手
在之前的學(xué)習(xí)之中,我們已經(jīng)對整個機(jī)器學(xué)習(xí)的結(jié)構(gòu)有了一個大致的了解,但是我們在查看訓(xùn)練結(jié)果的時候只采用了兩種可視化方法:
- 使用 print 或者 log 來打印出一些日志與結(jié)果;
- 使用 pyplot 來進(jìn)行運行結(jié)果的可視化。
這兩種結(jié)果各有優(yōu)劣,第一種方法比較快速,能夠在訓(xùn)練的時候直接查看,但是卻不夠直觀;而第二種方法能夠很直觀的看到變化,但是卻只能在訓(xùn)練結(jié)束后查看。有沒有一種更好的方法來做到實時的、快速地、直觀的查看呢?
那就是接下來幾節(jié)課我們要學(xué)習(xí)的可視化工具 —— TensorBoard 。
1. 什么是 TensorBoard
TensorBoard 是一個工具包,它提供機(jī)器學(xué)習(xí)實驗所需的可視化功能和工具。
值得注意的是,這里并沒有明確說明要使用 TensorFlow 框架才能使用 TensorBoard 才能進(jìn)行可視化工作。因此在實際中,很多的其他框架之中都內(nèi)置了 TensorBoard 的工具,比如 PyTorch 等??傮w而言,TensorBoard 是一個通用的,高效率的可視化工具。
具體而言,TensorBoard 可以實現(xiàn)以下的功能:
- 對準(zhǔn)確率、訓(xùn)練損失等參數(shù)進(jìn)行可視化工作;
- 對模型的架構(gòu)進(jìn)行可視化工作;
- 對文本、圖片、音頻等媒體數(shù)據(jù)進(jìn)行顯示;
- 查看權(quán)重、偏差的直方圖;
- 等等。
在這里,結(jié)合我們之前的訓(xùn)練例子,我們會更多地對前三點應(yīng)用進(jìn)行講解。
2. TensorBoard 的安裝
一般情況下,當(dāng)你安裝 TensorFlow 的時候,已經(jīng)默認(rèn)幫你安裝了 TensorBoard ,你只需要直接使用即可。但是也不排除某些特殊情況導(dǎo)致沒有一起安裝的情況。
2.1 使用 PIP 安裝
使用 PIP 安裝比較簡單,直接運行以下命令即可:
pip install TensorBoard
如果網(wǎng)絡(luò)連接失敗,可以參考以前的 TensorFlow 安裝教程進(jìn)行鏡像的更換。
2.2 使用 Anaconda 安裝
如果有些同學(xué)是在 Anaconda 環(huán)境中進(jìn)行的操作,那么推薦使用 Anaconda 命令進(jìn)行安裝:
conda install TensorBoard
通過這樣的操作,我們就完成了 TensorBoard 的安裝工作。
3. TensorBoard 的快速上手使用
既然已經(jīng)安裝了 TensorBoard ,那么接下來我們便來看一下如何快速上手使用 TensorBoard 。
在這里,我們并不會進(jìn)行更加深入的學(xué)習(xí),也不會記錄過于復(fù)雜的數(shù)據(jù),這一節(jié)的目的是讓大家對 TensorBoard 的整體使用流程有一個大致的了解。
首先,我們編寫一段很平常的 Mnist 數(shù)據(jù)集的識別程序:
首先,我們進(jìn)行數(shù)據(jù)集的獲取與模型的構(gòu)建:
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'])
這是一個非常簡單的線性程序,并且我們在模型編譯的過程之中,指定記錄的指標(biāo)包括準(zhǔn)確率(accuracy)。
然后我們進(jìn)行模型的訓(xùn)練,同時進(jìn)行相應(yīng)的記錄工作:
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])
在這里,我們定義了一個回調(diào),該回調(diào)是 TensorBoard 回調(diào),該回調(diào)會在模型訓(xùn)練的時候進(jìn)行日志的輸出與構(gòu)建工作。
在這里我們只指定了一個參數(shù):
- logdir:用于存放日志的目錄。
在后續(xù)的學(xué)習(xí)之中,我們會陸續(xù)學(xué)習(xí)到更多的參數(shù)與使用方法。
運行程序,我們可以得到如下輸出:
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>
然后我們在當(dāng)前目錄下運行終端,并且輸入命令:
tensorboard --logdir logs
其中 --logdir 的參數(shù)就是我們剛才指定的日志目錄,通過運行以上命令,我們能得到相應(yīng)的輸出,通過輸出我們可以發(fā)現(xiàn),我們的 TensorBoard 目前在 localhost:6006 端口運行。
在瀏覽器中打開 localhost:6006 ,我們就可以發(fā)現(xiàn)如下界面:
我們可以發(fā)現(xiàn),該頁面一共有兩個選項卡,第一個選項卡包含了兩個圖表:
- 訓(xùn)練集、測試集的準(zhǔn)確率的圖表;
- 訓(xùn)練集、測試集的 Loss 的變化的圖表。
其中第二個圖表是自動生成的,也就是說 TensorBoard 會自動記錄 Loss 變化;而第一個圖表是由我們編譯模型的時候指定的。
打開第二個選項卡,我們可以看到我們的網(wǎng)絡(luò)的模型:
該模型圖展示了我們的網(wǎng)絡(luò)模型,并且支持縮放等功能。
4. 小結(jié)
在這節(jié)課中,我們學(xué)習(xí)了什么是 TensorBoard ,同時了解了如何安裝 TensorBoard ,最后,我們通過一個具體的實例了解了 TensorBoard 的具體使用方法以及整體的流程。