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