由于Model.train_on_batch()没有回调参数,我尝试使用Callback.on_epoch_end()将我的损失写入tensorboard。然而,尝试运行on_epoch_end()方法会导致标题错误,“TensorBoard”对象没有“writer”属性。解决写入tensorboard的初始问题的其他方法包括调用Callback.writer属性,运行这些解决方案也出现了相同的错误。此外,TensorBoard类的tensorflow文档没有提到writer属性。作为一个新手程序员,我认为on_epoch_end()方法在某个时候也调用了writer属性,但我困惑的是为什么函数会使用一个不存在的属性。
这是我用来创建回调的代码:
这是我用来创建回调的代码:
logdir = "./logs/"
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=logdir)
以下是我尝试在训练循环中运行的回调代码:
logs = {
'encoder':encoder_loss[0],
'discriminator':d_loss,
'generator':g_loss,
}
tensorboard_callback.on_epoch_end(i, logs)
其中encoder_loss、d_loss和g_loss是我的标量,i是批次号。
这个错误是因为我的代码有些问题,还是tensorflow试图引用不存在的东西导致的呢?
另外,如果有人知道使用Model.train_on_batch以另一种方式写入tensorboard的方法,那也可以解决我的问题。