(args, hyperparams, loader_train, loader_test, experiment_name, output_training_path)
| 156 | |
| 157 | |
| 158 | def train(args, hyperparams, loader_train, loader_test, experiment_name, output_training_path): |
| 159 | |
| 160 | cb=create_callbacks(with_tensorboard=hyperparams.with_tensorboard,\ |
| 161 | with_visualizer=hyperparams.with_visualizer,\ |
| 162 | viewer_config_path=hyperparams.viewer_config_path,\ |
| 163 | experiment_name=experiment_name) |
| 164 | |
| 165 | #create phases |
| 166 | phases= [ |
| 167 | Phase('train', loader_train, grad=True), |
| 168 | Phase('test', loader_test, grad=False), |
| 169 | ] |
| 170 | |
| 171 | #model |
| 172 | model = RGB2MaterialModel( |
| 173 | input_dim=1024, |
| 174 | out_dim=11, |
| 175 | hidden_dim=64, |
| 176 | ).to(args.device) |
| 177 | # model = torch.compile(model) |
| 178 | |
| 179 | |
| 180 | |
| 181 | # #optimizer |
| 182 | optimizer = torch.optim.AdamW (model.parameters(), amsgrad=False, lr=hyperparams.lr, weight_decay=1e-3) |
| 183 | lr_scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=hyperparams.nr_iters_to_train) |
| 184 | scheduler_warmup = UntunedLinearWarmup(optimizer) |
| 185 | |
| 186 | progress_bar = tqdm(range(0, hyperparams.nr_iters_to_train), desc="Training progress") |
| 187 | |
| 188 | loss_zero=torch.zeros((1)).cuda() |
| 189 | |
| 190 | |
| 191 | is_in_training_loop=True |
| 192 | while is_in_training_loop: |
| 193 | |
| 194 | for phase in phases: |
| 195 | model.train(phase.grad) |
| 196 | cb.phase_started(phase=phase) |
| 197 | cb.epoch_started(phase=phase) |
| 198 | |
| 199 | |
| 200 | #run epoch |
| 201 | for batch in iter(phase.loader): |
| 202 | cb.before_forward_pass(phase=phase) |
| 203 | |
| 204 | #progress |
| 205 | if phase.grad and phase.iter_nr%100==0 : |
| 206 | progress_bar.update(100) |
| 207 | |
| 208 | |
| 209 | #world_to_local |
| 210 | with torch.no_grad(): |
| 211 | gt_dict = prepare_gt_batch(batch, hyperparams, do_augmentation=phase.grad) |
| 212 | |
| 213 | input_dict=copy.deepcopy(gt_dict) |
| 214 | latents=input_dict["dinov2_latents"] |
| 215 |
no test coverage detected