繁体   English   中英

如何防止 pytorch 闪电中的张量板记录器记录当前纪元?

[英]How do you prevent the tensorboard logger in pytorch lightning from logging the current epoch?

在 pytorch 闪电中创建新的张量板记录器时,默认记录的两件事是当前纪元和 hp_metric。 我可以通过设置default_hp_metric=False来禁用 hp_metric 日志记录,但我找不到任何东西来禁用纪元的日志记录。 我在 Lightning.py、trainer.py 和 tensorboard.py 文件中搜索了包含模块代码、trainer 和 tensorboard logger 的文件,但在任何地方都找不到 epoch 的日志记录调用。

即使采用 pytorch 闪电教程中的准系统示例,也会发生这种行为。

有没有办法禁用此纪元记录以防止张量板界面混乱?

Tensorboard 纪元记录

简而言之

您可以通过覆盖 tensorboard logger 来禁用自动写入epoch变量。

from pytorch_lightning import loggers
from pytorch_lightning.utilities import rank_zero_only

class TBLogger(loggers.TensorBoardLogger):
    @rank_zero_only
    def log_metrics(self, metrics, step):
        metrics.pop('epoch', None)
        return super().log_metrics(metrics, step)

完整版本

  • Pytorch 闪电自动将epoch vs global_step图添加到每个记录器。 (你可以在这里看到描述)
  • 没有选项可以关闭此行为。 因为这是硬编码的,没有任何条件,如下所示:(请参阅此处的完整源代码)
     if step is None: # added metrics for convenience scalar_metrics.setdefault("epoch", self.trainer.current_epoch) step = self.trainer.global_step # log actual metrics self.trainer.logger.agg_and_log_metrics(scalar_metrics, step=step)
  • 要禁用此选项,您应该从在add_and_log_metrics(scalar_metrics, step=step)中调用的log_metrics(metrics, step)中的度量字典中弹出epoch变量。 代码如上所示。 你可以在这里看到完整的长版本片段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM