【问题标题】:'TensorBoard' object has no attribute 'writer' error when using Callback.on_epoch_end()使用 Callback.on_epoch_end() 时,“TensorBoard”对象没有属性“writer”错误
【发布时间】:2019-12-22 06:08:31
【问题描述】:

由于 Model.train_on_batch() 不接受回调输入,我尝试使用 Callback.on_epoch_end() 将我的损失写入张量板

但是,尝试运行 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 的另一种方法,那也可以解决我的问题

【问题讨论】:

  • 同样的问题

标签: python-3.x tensorflow keras


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-04-12
    • 2020-08-11
    • 2021-07-25
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    相关资源
    最近更新 更多