在 TensorBoard 之中查看模型結構圖
在之前的學習過程之中,我們學習了如何自定義查看訓練過程之中的各項指標。在實際的應用過程之中,為了保證模型構建的準確性,我們也會經常查看網絡的模型結構圖。那么這節課我們就來看一下如何在 TensorBoard 之中查看模型圖。
1. 如何在 TensorBoard 之中生成 Keras 模型結構圖
倘若我們通過 tf.keras API 來自定義了一個網絡模型,那么我們在 TensorBoard 來查看模型圖是非常簡單的一件事情。
當我們使用 tf.keras 的模型的 fit() 方法的時候,框架會自動幫我們繪制模型結構圖。
如下代碼所示:
首先我們定義模型、數據與相應的參數。
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=[])
然后我們定義相應的 TensorBoard 日志目錄,同時對模型使用 fit() 進行訓練:
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 并在瀏覽器查看:
tensorboard --logdir logs
我們就可以在瀏覽器的 Graph 標簽頁之中看到模型圖了:
2. 如何在 TensorBoard 之中生成使用 tf.function 函數定義的圖
在實際的應用過程之中,有很多的情況下,我們需要使用 tf.function 來加速模型的速度并自定義訓練過程。那么這個時候我們要如何才能查看網絡的模型結構圖呢?
其實也很簡單,我們只需經過如下幾個步驟:
- 確保 tf.function 函數修飾了我們需要進行可視化的操作,這邊就是模型的過程;
- 創建一個 TensorBoard 的日志寫入器 tf.summary.create_file_writer() ;
- 通過 tf.summary.trace_on() API 進行變量路徑的追蹤;
- 執行我們需要可視化的操作;
- 使用 tf.summary.trace_export() API 將圖寫入日志。
在這里,我們可以使用一個很簡單的例子來查看操作的結構:
# 定義網絡的操作
@tf.function
def test_func(x, y):
z = tf.matmul(x, y)
z = z * 5.0
z = tf.nn.relu(z)
return z
# 創建寫入器
writer = tf.summary.create_file_writer('./logs/3')
# 創建初試數據
x = tf.random.uniform((5, 5))
y = tf.random.uniform((5, 5))
# 開啟變量追蹤
tf.summary.trace_on(graph=True, profiler=True)
# 運行程序
z = test_func(x, y)
# 將日志輸出
with writer.as_default():
tf.summary.trace_export(
name="test_func_graph",
step=1,
profiler_outdir='./logs/3')
在這里,我們首先定義了一個基本的模型操作,該模型操作由一個矩陣乘法、一個常量乘法、外加一個 Relu 激活層組成。
在運行完操作之后,我們便使用 tf.summary.trace_export() API 來將模型圖輸入道日志之中。
然后我們便可以在瀏覽器之中查看到相應的模型圖:
可以看到,該模型圖完整的反映了我們的操作。
3. TensorBoard 之中基本、基本的操作
既然了解了如何將模型圖輸出到日志,那么接下來我們就應該查看在 TensorBoard 之中對模型圖的基本操作。
3.1 平移、縮放以及詳細信息的查看
在 TensorBoard 之中,使用鼠標滾輪即可實現模型圖的縮放,當我們一直放大,會看到操作內部的細節。
并且按住鼠標左鍵,移動鼠標,即可實現模型圖的移動操作。
雙擊網絡節點,即可展開網絡節點,從而查看到網絡內部的細節操作。
3.2 模型的節點的搜索
在左側的最上方,可以搜索自己想要查看的節點,這里是支持正則表達式的。
3.3 模型的下載
點擊左側的 Download PNG 即可下載帶有透明度的、網絡模型的圖片。
3.4 切換網絡模型
點擊左側的 Run 按鈕,即可選擇不同的網絡模型進行查看,前提是我們已經將網絡模型輸入到日志之中去。
3.5 切換查看方式
點擊左側的 Tag 選項,即可查看網絡的查看方式。
默認是查看中粒度的網絡模型,如果我們的模型是使用 Keras 定義的,那么我們可以選擇查看 Keras 結構,這是一個總體的概覽,可以幫助我們掌握大體的網絡結構。
3.6 模型圖的圖例
當我們遇到一些不理解的圖標的時候,我們可以通過左下角的圖例進行查詢:
4. 小結
在這節課之中,我們學習率如何在 TensorBoard 之中查看 Keras 模型,同時也了解了如何產看自定義的操作過程,最后我們了解了 TensorBoard 的一些基本操作。 TensorBoard 也在持續更新,未來一定會有更多新的功能。