mmengine icon indicating copy to clipboard operation
mmengine copied to clipboard

[Feature] Support outputting loss during the validation phase

Open franztao opened this issue 2 years ago • 2 comments

What is the feature?

用wandb记录,只打出训练的loss,没打出val的loss,原先的openmmlab 1.x都能打出的 43aaca8ab795a0f7bf6d5d390c75b6b openmmlab 2.x版本的输出 image openmmlab 1.x版本的输出,便于分析训练是否拟合

Any other context?

No response

franztao avatar Aug 02 '23 16:08 franztao

We recommend using English or English & Chinese for issues so that we could have broader discussion.

mm-assistant[bot] avatar Aug 02 '23 16:08 mm-assistant[bot]

我想你之前是通过在配置文件里指定 workflow 来输出验证集 loss 的吧?在 OpenMMLab 1.0 里,Runner.val 是专门用于输出验证集 loss 的,而 EvalHook 是用来输出评价指标的。

而在 OpenMMLab 2.0 里,统一使用 ValLoop 来进行评测。设计之初我们也讨论过如何输出验证集的 loss,你也可以发现 model.val_step 会接受 mode 参数,进而把 mode 传给 model.forward,根据 mode 的值选择不同的分支。如果你想在验证阶段同时输出验证集 loss,你可以新定义一个 “mode”,例如 "loss_predict",在这个分支下,model.forward 会同时输出 loss 和 metric。由于 model 的输出通常是 List[dict] 或则 List[DataSample],那你只需要让列表里的每个元素额外包含 “loss” 字段即可。

为了能够在配置文件中控制 ValLoop 是否计算 loss,你也可以为 ValLoop 加一个 mode 参数,并通过 val_cfg 参数来控制在调用 model.val_step 时,应该传入什么 mode。

不过我们近期没有计划去实现这个特性,如果可以的话你可以尝试上述的方案是否能够满足你的需求,也欢迎提交 PR 为 MMEngine 支持这个特性。

HAOCHENYE avatar Aug 03 '23 06:08 HAOCHENYE