(self, input, noise, sigma, **kwargs)
| 228 | |
| 229 | class DenoiserWithVariance(Denoiser): |
| 230 | def loss(self, input, noise, sigma, **kwargs): |
| 231 | print("DenoiserWithVariance") |
| 232 | c_skip, c_out, c_in = [utils.append_dims(x, input.ndim) for x in self.get_scalings(sigma)] |
| 233 | noised_input = input + noise * utils.append_dims(sigma, input.ndim) |
| 234 | model_output, logvar = self.inner_model(noised_input * c_in, sigma, return_variance=True, **kwargs) |
| 235 | logvar = utils.append_dims(logvar, model_output.ndim) |
| 236 | target = (input - c_skip * noised_input) / c_out |
| 237 | losses = ((model_output - target) ** 2 / logvar.exp() + logvar) / 2 |
| 238 | return losses.flatten(1).mean(1) |
| 239 | |
| 240 | |
| 241 | class SimpleLossDenoiser(Denoiser): |
nothing calls this directly
no test coverage detected