wandb.log 在记录log时有这样一个问题:
code-1
wandb.log({"total_loss": total_loss})
wandb.log({"lr": optimizer.param_groups[0]['lr']})
code-2
wandb.log({"lr": optimizer.param_groups[0]['lr']})
在实际显示的时候,code-1中的step数目是code-2step数目的一半,明显的感受是lr的变化斜率是呈2倍关系的:
这是因为wandb.bog()中有一个 global step 的变量。每次使用wandb.log都会影响global step,因此不同的log记录会相互影响。
解决的办法有两种:
solution-1: 把所有要用log记录的变量写在一起:
wandb.log({"total_loss": total_loss},
{"lr": optimizer.param_groups[0]['lr']}
)
solution-2: 除了最后一个变量外,其他log在记录变量时加上一个commit=False。(如果都加commit=False显示不出东西):
wandb.log({"total_loss": total_loss},commit=False)
wandb.log({"lr": optimizer.param_groups[0]['lr']})
解决啦!