(self, sample, batch_idx, optimizer_idx=-1)
| 124 | raise NotImplementedError |
| 125 | |
| 126 | def training_step(self, sample, batch_idx, optimizer_idx=-1): |
| 127 | loss_ret = self._training_step(sample, batch_idx, optimizer_idx) |
| 128 | self.opt_idx = optimizer_idx |
| 129 | if loss_ret is None: |
| 130 | return {'loss': None} |
| 131 | total_loss, log_outputs = loss_ret |
| 132 | log_outputs = utils.tensors_to_scalars(log_outputs) |
| 133 | for k, v in log_outputs.items(): |
| 134 | if k not in self.training_losses_meter: |
| 135 | self.training_losses_meter[k] = utils.AvgrageMeter() |
| 136 | if not np.isnan(v): |
| 137 | self.training_losses_meter[k].update(v) |
| 138 | self.training_losses_meter['total_loss'].update(total_loss.item()) |
| 139 | |
| 140 | try: |
| 141 | log_outputs['lr'] = self.scheduler.get_lr() |
| 142 | if isinstance(log_outputs['lr'], list): |
| 143 | log_outputs['lr'] = log_outputs['lr'][0] |
| 144 | except: |
| 145 | pass |
| 146 | |
| 147 | # log_outputs['all_loss'] = total_loss.item() |
| 148 | progress_bar_log = log_outputs |
| 149 | tb_log = {f'tr/{k}': v for k, v in log_outputs.items()} |
| 150 | return { |
| 151 | 'loss': total_loss, |
| 152 | 'progress_bar': progress_bar_log, |
| 153 | 'log': tb_log |
| 154 | } |
| 155 | |
| 156 | def optimizer_step(self, epoch, batch_idx, optimizer, optimizer_idx): |
| 157 | optimizer.step() |
no test coverage detected