| 372 | ) |
| 373 | |
| 374 | def get_loss(self, pred, target, mean=True): |
| 375 | if self.loss_type == 'l1': |
| 376 | loss = (target - pred).abs() |
| 377 | if mean: |
| 378 | loss = loss.mean() |
| 379 | elif self.loss_type == 'l2': |
| 380 | if mean: |
| 381 | loss = torch.nn.functional.mse_loss(target, pred) |
| 382 | else: |
| 383 | loss = torch.nn.functional.mse_loss(target, pred, reduction='none') |
| 384 | else: |
| 385 | raise NotImplementedError("unknown loss type '{loss_type}'") |
| 386 | |
| 387 | return loss |
| 388 | |
| 389 | def p_losses(self, x_start, t, noise=None): |
| 390 | noise = default(noise, lambda: torch.randn_like(x_start)) |