Pau*_*ger 6 python logging tensorboard pytorch pytorch-lightning
在 pytorch Lightning 中创建新的张量板记录器时,默认记录的两件事是当前纪元和 hp_metric。我能够通过设置禁用 hp_metric 日志记录default_hp_metric=False,但我找不到任何可以禁用纪元日志记录的内容。我在 Lightning.py、trainer.py 和 tensorboard.py 文件中进行了搜索,其中包含模块、训练器和张量板记录器的代码,但在任何地方都找不到 epoch 的日志记录调用。
即使采用 pytorch Lightning 教程中的准系统示例,也会发生这种行为。
有没有办法禁用纪元记录以防止张量板界面混乱?
您可以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)
Run Code Online (Sandbox Code Playgroud)
epochvsglobal_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)
Run Code Online (Sandbox Code Playgroud)
epoch度量字典中弹出变量。代码如上所示。您可以在此处查看完整的长版本片段。log_metrics(metrics, step)add_and_log_metrics(scalar_metrics, step=step)