Mon*_*lal 2 python machine-learning deep-learning wandb
我有以下代码,用于使用 WandB API 记录每个时期的训练和验证损失。但我不确定为什么我没有在同一时期得到 val 损失和训练损失。知道如何解决这个问题吗?
wandb.log({"train loss": train_epoch_loss,
"val loss": val_epoch_loss,
"epoch": epoch})
wandb.log({"train acc": train_epoch_acc,
"val acc": val_epoch_acc,
"epoch": epoch})
wandb.log({"best val acc": best_acc, "epoch": epoch})
Run Code Online (Sandbox Code Playgroud)
小智 6
我在权重与偏差工作,很乐意提供帮助:
同一张图表上有 2 个指标
要在同一图表上绘制 2 个指标,您可以单击图表中的铅笔图标进行编辑,然后向 y 轴添加其他指标,如下所示。
更改默认 x 轴
您还可以更改 X 轴以针对“epoch”而不是默认的 wandb 进行绘图step。如果默认情况下您希望这种行为,您可以wandb.define_metric在开始训练之前调用一次并将 x 轴设置为epoch。有关更多信息,请参阅Define_metric文档
记录步骤
需要注意的一件事是,当您记录验证指标时,您希望它们与训练指标在同一步骤中记录。在这种情况下,你可以这样做:
metrics = {}
for step, batch in my_data:
...
train_loss = ....
metrics['train_loss'] = train_loss
if step % val_steps == 0:
val_loss = ...
metrics['val_loss'] = val_loss
wandb.log(metrics)
else:
wandb.log(metrics)
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用commit=False参数inwandb.log来存储指标,而不增加 wandb 步骤。然后wandb.log()在需要时调用以增加步骤。