深度学习-runner.run(data_loaders, cfg.workflow)内部执行过程
文件:~/catkin_ws/SparseDrive/projects/mmdet3d_plugin/apis/mmdet_train.py
完成数据加载器、优化器、运行器实例化后,
@RUNNERS.register_module()
class IterBasedRunner(BaseRunner):"""Iteration-based Runner.This runner train models iteration by iteration."""def train(self, data_loader, **kwargs):#若self.model是torch.nn.Module的子类且未重写train()方法:#会调用PyTorch原生的torch.nn.Module.train()方法self.model.train()self.mode = 'train'self.data_loader = data_loaderself._epoch = data_loader.epochdata_batch = next(data_loader)self.data_batch = data_batchself.call_hook('before_train_iter')outputs = self.model.train_step(data_batch, self.optimizer, **kwargs)if not isinstance(outputs, dict):raise TypeError('model.train_step() must return a dict')if 'log_vars' in outputs:self.log_buffer.update(outputs['log_vars'], outputs['num_samples'])self.outputs = outputsself.call_hook('after_train_iter')del self.data_batchself._inner_iter += 1self._iter += 1