終于學到了我期待已久的tensorboard,在學tf1.x版本時候,我就喜歡上了這個功能,這真的是一個非常非常非常強大的可視化工具,也是Tensorflow的一個優點。學會使用TensorBoard,将可以幫助我們建構複雜模型。
這裡需要了解“可視化”的意義。“可視化”也叫做資料可視化。是關于資料之視覺表現形式的研究。這種資料的視覺表現形式被定義為一種以某種概要形式抽提出來的資訊,包括相應資訊機關的各種屬性和變量。例如我們需要可視化算法運作的錯誤率,那麼我們可以取算法每次訓練的錯誤率,繪制成折線圖或曲線圖,來表達訓練過程中錯誤率的變化。

下邊我們先來說一下使用tf.keras子產品的Model.fit()下的tensorboard:
tf.keras.callbacks.TensorBoard(
log_dir='logs', histogram_freq=0, write_graph=True, write_images=False,
update_freq='epoch', profile_batch=2, embeddings_freq=0,
embeddings_metadata=None, **kwargs
)
"""
log_dir:将要由TensorBoard解析的日志檔案儲存到的目錄路徑。
histogram_freq:計算模型各層的激活度和權重直方圖的頻率(以曆元計)。如果設定為0,将不計算直方圖。必須為直方圖可視化指定驗證資料(或拆分)。
write_graph:是否在TensorBoard中可視化圖形。當write_graph設定為True時,日志檔案可能會變得很大。
write_images:是否編寫模型權重以在TensorBoard中可視化為圖像。
update_freq:'batch'或'epoch'或整數。使用時'batch',每批之後将損失和名額寫入TensorBoard。同樣适用于'epoch'。如果使用整數,假設1000,回調将每1000個樣本将名額和損失寫入TensorBoard。請注意,向TensorBoard寫入太頻繁會減慢您的訓練速度。
profile_batch:分析批次以采樣計算特征。預設情況下,它将配置第二批。将profile_batch = 0設定為禁用性能分析。必須在TensorFlow急切模式下運作。
embeddings_freq:嵌入層可視化的頻率(以曆元計)。如果設定為0,則嵌入将不可見。
embeddings_metadata:将層名稱映射到檔案名的字典,該嵌入層的中繼資料儲存在該檔案名中。檢視 有關中繼資料檔案格式的 詳細資訊。如果相同的中繼資料檔案用于所有嵌入層,則可以傳遞字元串。
"""
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten, Conv2D
from tensorflow.keras import Model
import numpy as np
import datetime
print(tf.__version__)
print(np.__version__)
mnist = np.load("mnist.npz")
x_train, y_train, x_test, y_test = mnist['x_train'],mnist['y_train'],mnist['x_test'],mnist['y_test']
x_train, x_test = x_train / 255.0, x_test / 255.0
# Add a channels dimension
x_train = x_train[..., tf.newaxis]
x_test = x_test[..., tf.newaxis]
class MyModel(Model):
def __init__(self):
super(MyModel, self).__init__()
self.conv1 = Conv2D(32, 3, activation='relu')
self.flatten = Flatten()
self.d1 = Dense(128, activation='relu')
self.d2 = Dense(10, activation='softmax')
@tf.function
def call(self, x):
x = self.conv1(x)
x = self.flatten(x)
x = self.d1(x)
return self.d2(x)
model = MyModel()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
#keras下的tensorboard調用非常簡單,隻需要在這裡定義一個變量,設定好對應的參數,然後寫進model.fit中的callbacks即可
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir="keras_logv2",
histogram_freq=1,
profile_batch = 100000000)
model.fit(x=x_train,
y=y_train,
epochs=20,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback])
下邊說一下如何在windows下打開我們下載下傳好的圖
#打開Anaconda Prompt,進入到上述目錄下,激活tensorflow環境,指令行輸入
tensorboard --logdir='位址(注意這裡的位址是指我們設定的檔案夾所在的目錄,也就是上邊代碼中keras_logv2檔案夾所在的目錄)'
#然後Anaconda Prompt會出現一個網址 我們打開網址即可