神經網絡學習小記錄43——Keras中Tensorboard的使用

學習前言

可視化是個好東西呀,怎麼學學呢!
在這裏插入圖片描述

Tensorboard詳解

該類在存放在keras.callbacks模塊中。擁有許多參數,主要的參數如下:

1、log_dir: 用來保存Tensorboard的日誌文件等內容的位置

2、histogram_freq: 對於模型中各個層計算激活值和模型權重直方圖的頻率。

3、write_graph: 是否在 TensorBoard 中可視化圖像。

4、write_grads: 是否在 TensorBoard 中可視化梯度值直方圖。

5、batch_size: 用以直方圖計算的傳入神經元網絡輸入批的大小。

6、write_images: 是否在 TensorBoard中將模型權重以圖片可視化。

7、update_freq: 常用的三個值爲’batch’ 、 ‘epoch’ 或 整數。當使用 ‘batch’ 時,在每個 batch 之後將損失和評估值寫入到 TensorBoard 中。 ‘epoch’ 類似。如果使用整數,會在每一定個樣本之後將損失和評估值寫入到 TensorBoard 中。

默認值如下:

log_dir='./logs',  # 默認保存在當前文件夾下的logs文件夾之下
histogram_freq=0,
batch_size=32,
write_graph=True,  #默認是True,默認是顯示graph的。
write_grads=False,
write_images=False,
update_freq='epoch'

使用例子

以手寫體爲例子,我們打開histogram_freq和write_grads,也就是在Tensorboard中保存權值直方圖和梯度直方圖。
打開CMD,利用tensorboard --logdir=logs生成tensorboard觀測網頁。

1、loss和acc

在這裏插入圖片描述在這裏插入圖片描述

2、權值直方圖

在這裏插入圖片描述

3、梯度直方圖

在這裏插入圖片描述

實現代碼

import numpy as np

from keras.layers import Input, Dense, Dropout, Activation,Conv2D,MaxPool2D,Flatten
from keras.datasets import mnist
from keras.models import Model
from keras.utils import to_categorical
from keras.callbacks import TensorBoard


if __name__=="__main__":
    (x_train,y_train),(x_test,y_test) = mnist.load_data()

    x_train=np.expand_dims(x_train,axis=-1)
    x_test=np.expand_dims(x_test,axis=-1)
    y_train=to_categorical(y_train,num_classes=10)
    y_test=to_categorical(y_test,num_classes=10)
    batch_size=128
    epochs=10

    inputs = Input([28,28,1])
    x = Conv2D(32, (5,5), activation='relu')(inputs)
    x = Conv2D(64, (5,5), activation='relu')(x)   
    x = MaxPool2D(pool_size=(2,2))(x)
    x = Flatten()(x)    
    x = Dense(128, activation='relu')(x)
    x = Dropout(0.5)(x)
    x = Dense(10, activation='softmax')(x)

    model = Model(inputs,x)

    model.compile(loss='categorical_crossentropy', optimizer="adam",metrics=['acc']) 
    Tensorboard= TensorBoard(log_dir="./model", histogram_freq=1,write_grads=True)
    history=model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, shuffle=True, validation_split=0.2,callbacks=[Tensorboard])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章