Pytorch-lightning 中的 `on_validation_epoch_end` 和 `validation_epoch_end` 有什么区别?

What is the difference between `on_validation_epoch_end` and `validation_epoch_end` in Pytorch-lightning?

LightningModule 中,Pycharm 允许 2 种自动完成方法:

class MyModel(LightningModule):

    def on_validation_epoch_end(self):

    def validation_epoch_end(self, outs):

hooks.py

中引用了 on_validation_epoch_end
def on_validation_epoch_end(self) -> None:
    """
    Called in the validation loop at the very end of the epoch.
    """
    # do something when the epoch ends

validation_epoch_endevaluation_loop.py 中作为 eval_results = model.validation_epoch_end(eval_results) 调用,导致 __run_eval_epoch_end


每一个的目的是什么?

我只能假设其中一个已弃用。找不到任何相关文档。

Here 是显示何时调用挂钩的伪代码,我认为这很明确地表明你是对的:这两个函数是多余的(字面意思是在同一个地方用相同的参数调用) 我会说 validation_epoch_end 在这里被认为是弃用的,因为文档中没有提到它,而挂钩(on_event_start/end 形式)被广泛解释