Diffuse the data for a given number of diffusion steps. In other words, sample from q(x_t | x_0). :param x_start: the initial data batch. :param t: the number of diffusion steps (minus 1). Here, 0 means one step. :param noise: if specified, the split-out
(self, x_start, t, noise=None)
| 213 | return mean, variance, log_variance |
| 214 | |
| 215 | def q_sample(self, x_start, t, noise=None): |
| 216 | """ |
| 217 | Diffuse the data for a given number of diffusion steps. |
| 218 | In other words, sample from q(x_t | x_0). |
| 219 | :param x_start: the initial data batch. |
| 220 | :param t: the number of diffusion steps (minus 1). Here, 0 means one step. |
| 221 | :param noise: if specified, the split-out normal noise. |
| 222 | :return: A noisy version of x_start. |
| 223 | """ |
| 224 | if noise is None: |
| 225 | noise = th.randn_like(x_start) |
| 226 | assert noise.shape == x_start.shape |
| 227 | return ( |
| 228 | _extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start |
| 229 | + _extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_start.shape) * noise |
| 230 | ) |
| 231 | |
| 232 | def q_posterior_mean_variance(self, x_start, x_t, t): |
| 233 | """ |
no test coverage detected