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

Gul*_*zar 6 python pytorch pytorch-lightning

在 内部LightningModule,Pycharm 允许 2 种自动完成方法:

class MyModel(LightningModule):

    def on_validation_epoch_end(self):

    def validation_epoch_end(self, outs):
Run Code Online (Sandbox Code Playgroud)

on_validation_epoch_end引用于hooks.py

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
Run Code Online (Sandbox Code Playgroud)

validation_epoch_end称为evaluation_loop.py导致.eval_results = model.validation_epoch_end(eval_results)__run_eval_epoch_end


其中每一个的目的是什么?

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

tri*_*ror 5

是一个伪代码,显示何时调用钩子,我认为它非常明确地表明您是对的:这两个函数是多余的(字面上用相同的参数在同一位置调用),我想说这就是validation_epoch_end那个此处被视为已弃用,因为文档中未提及它,而挂钩(形式on_event_start/end)已被广泛解释