在使用Callback.on_epoch_end()时出现'TensorBoard'对象没有'writer'属性的错误。

5
由于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的方法,那也可以解决我的问题。


同样的问题在这里。 - Federico Dorato
1个回答

0

由于您正在使用没有fit方法的回调函数,因此您还需要将您的模型传递给TensorBoard对象:

logdir = "./logs/"
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=logdir)
tensorboard_callback.set_model(model=model)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接