使用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