Detectron2(二): Trainer

1 train_net.py中的Trainer是继承了detectron2/engine/defaults.py中的DefaultTrainer类,而该类又是继承了detectron2/engine/train_loog.py中的SimpleTrainer类,而SimpleTrainer又继承了相同文件里面的TrainerBase类
a. 在最基础的TrainerBase类中定义了register_hooks,train,before_train,after_train,before_step,after_step,run_step等函数,具体来说就是register_hooks就是对输入的hooks进行注册(后面解释hooks的用处),然后before_train,after_train,before_step,after_step等就是调用hooks中每个hook对应的函数(hook类参照detectron2/engine/train_loog.py中的Hookbase类,就是定义了一个hook的四个函数before_train,after_train,before_step,after_step),train就是调用各种before_train,after_train,before_step,after_step及run_step函数
b. 在SimpleTrainer主要定义了run_step函数,即一个训练过程,从输入到模型输出,计算损失函数到计算梯度等,还有_write_metrics这个记录日志函数
c. 在DefaultTrainer类中,首先就是初始化了model,optimizer,dataloader,lr_scheduler以及self.register_hooks(这个是继承了TrainerBase类),这里主要定义了build_hooks函数(调用了detectron2/engine/hooks.py里面的各种hook类)

下面对每个细类进行分解
a. DefaultTraine类中的optimizer调用了的detectron2/solver/build.py中的build_optimizer函数,就是一个基本的SGD优化器,同样里面的scheduler调用了detectron2/solver/build.py中的build_lr_scheduler函数,这个函数主要包括两种学习率曲线,WarmupMultiStepLR和WarmupCosineLR都在detectron2/solver/lr_scheduler.py中进行了定义(可以供以后别的项目参考使用)
b. 对于hooks.py中的所有hook,以后在详细分解…
c. 对于models以后在分解…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值