runner,hook介绍
当涉及到深度学习框架,例如 MMDetection 或其他 MM 系列工具,runner
可以看作是训练过程的核心管理器,它负责模型的训练循环、评估以及与训练相关的各种事务。简单来说,当 runner“运行”,它会开始一个训练循环,迭代数据,前向传播、后向传播并更新模型权重。
Runner 与 Hook 的关系
当 runner
进行训练时,它会在适当的时间点调用已注册的 hook
。例如,有可能有一个 hook 专门在每个 epoch 结束时保存模型,另一个 hook 在每个 epoch 开始时调整学习率。runner
知道何时调用这些 hooks,而 hooks 知道在被调用时应该执行什么操作。
代码示例
class SimpleRunner:def __init__(self):self.hooks = []def register_hook(self, hook):self.hooks.append(hook)def run(self, epochs):for epoch in range(epochs):for hook in self.hooks:hook.before_epoch()# 假设这里进行模型的训练代码,例如&#