1. keras如何使用tensorboard
keras使用tensorboard是通過回調函數來實現的,關於什麼是keras的“回調函數”,這裏就不再贅述了,所以Tensorboard也是定義在keras.callbacks模塊中的,通過構造一個Tensorboard類的對象,然後在訓練的時候在fit裏面指定callbacks參數即可,keras使用的一般格式爲:
# 構造一個Tensorboard類的對象
tbCallBack = TensorBoard(log_dir="./model",update_freq='batch', histogram_freq=0,write_graph=True, write_images=True,...)
# 在fit 裏面指定callbacks參數
history=model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=2,
validation_split=0.2,
callbacks=[tbCallBack])
2. Tensorboard類詳解
該類在keras.callbacks模塊中。它的參數列表如下:
- log_dir: 用來保存被 TensorBoard 分析的日誌文件的文件名。
- histogram_freq: 對於模型中各個層計算激活值和模型權重直方圖的頻率(訓練輪數中)。 如果設置成 0 ,直方圖不會被計算。對於直方圖可視化的驗證數據(或分離數據)一定要明確的指出。
- write_graph: 是否在 TensorBoard 中可視化圖像。 如果 write_graph 被設置爲 True。
- write_grads: 是否在 TensorBoard 中可視化梯度值直方圖。 histogram_freq 必須要大於 0 。
- batch_size: 用以直方圖計算的傳入神經元網絡輸入批的大小。
- write_images: 是否在 TensorBoard 中將模型權重以圖片可視化,如果設置爲True,日誌文件會變得非常大。
- embeddings_freq: 被選中的嵌入層會被保存的頻率(在訓練輪中)。
- embeddings_layer_names: 一個列表,會被監測層的名字。 如果是 None 或空列表,那麼所有的嵌入層都會被監測。
- embeddings_metadata: 一個字典,對應層的名字到保存有這個嵌入層元數據文件的名字。 查看 詳情 關於元數據的數據格式。 以防同樣的元數據被用於所用的嵌入層,字符串可以被傳入。
- embeddings_data: 要嵌入在 embeddings_layer_names 指定的層的數據。 Numpy 數組(如果模型有單個輸入)或 Numpy 數組列表(如果模型有多個輸入)。 Learn ore about embeddings。
- update_freq: 'batch' 或 'epoch' 或 整數。當使用 'batch' 時,在每個 batch 之後將損失和評估值寫入到 TensorBoard 中;同樣的情況應用到 'epoch' 中;如果使用整數,例如 10000,這個回調會在每 10000 個樣本之後將損失和評估值寫入到 TensorBoard 中。注意,頻繁地寫入到 TensorBoard 會減緩你的訓練。
3. 打開TensorBoard方式
Terminal中輸入:tensorboard --logdir=G:\python\Machine_learning\yangzhou\LSTM_window\logs
4. 用tensorboard顯示損失函數的值曲線圖,爲何會有顏色深淺兩條線
深色線:平滑之後
淺色線:真實曲線
tensorboard左邊有一個平滑度數選擇,默認是0.6,調節之後曲線就會發生變化,原來顏色淺的纔是真實曲線,但真實曲線往往不好看,所以加入了平滑產生了顏色深的線。