使用Tensorflow可以使用tf.summary在培訓期間監控數量。Keras - 在培訓期間使用TensorBoard監控數量
使用Keras可以做同樣的事嗎?你可以通過修改代碼https://github.com/fchollet/keras/blob/master/examples/variational_autoencoder.py並監測KL損失(定義爲at line 53)
提前謝謝!
使用Tensorflow可以使用tf.summary在培訓期間監控數量。Keras - 在培訓期間使用TensorBoard監控數量
使用Keras可以做同樣的事嗎?你可以通過修改代碼https://github.com/fchollet/keras/blob/master/examples/variational_autoencoder.py並監測KL損失(定義爲at line 53)
提前謝謝!
實際上,一種解決方法是在編譯模型時添加要監視的數量作爲度量。
舉例來說,我想監視KL散度(在變自動編碼器的情況下),所以我寫了這個:
def kl_loss(y_true, y_pred):
kl_loss = - 0.5 * K.sum(1 + K.log(z_var_0+1e-8) - K.square(z_mean_0) - z_var_0, axis=-1)
return kl_loss
vae.compile(optimizer='rmsprop', loss=vae_loss, metrics=['accuracy', kl_loss])
它做什麼,我需要
您是否嘗試過TensorBoard回調? [1]
tensorboard = keras.callbacks.TensorBoard(log_dir='./logs',
histogram_freq=1,
write_graph=True,
write_images=False)
vae.fit(x_train,
shuffle=True,
epochs=epochs,
batch_size=batch_size,
validation_data=(x_test, x_test),
callbacks=[tensorboard])
然後運行:
tensorboard --logdir=./logs
你可以寫回調來處理你感興趣的特定項目的修改版本
Tensorboard是很不錯,但它不夠靈活。例如,如果我的損失過於分a和b,a + b是總損失(但是在模型的相同輸出上計算),我無法單獨監控a和b,但只能分別監控它們的總和a + b。我希望能夠同時監控,而tf.summary只是允許這樣做,但我不知道如何與Keras進行溝通 – sbaur
Tensorboard回調使用'tf.summary.histogram'和'tf.summary.FileWriter '傾銷Tensorboard的日誌。 https://github.com/fchollet/keras/blob/master/keras/callbacks.py#L631所以它可能很容易定義你自己的lambda回調,發送你想要的選項tf.summary – MattMcKnight
我沒有想過關於看回調.TensorBoard源代碼,這裏有很多有用的代碼。非常感謝,它確實有幫助! – sbaur