Get the prior KL term for the variational lower-bound, measured in bits-per-dim. This term can't be optimized, as it only depends on the encoder. :param x_start: the [N x C x ...] tensor of inputs. :return: a batch of [N] KL values (in bits), one per batch
(self, x_start)
| 847 | return terms |
| 848 | |
| 849 | def _prior_bpd(self, x_start): |
| 850 | """ |
| 851 | Get the prior KL term for the variational lower-bound, measured in |
| 852 | bits-per-dim. |
| 853 | |
| 854 | This term can't be optimized, as it only depends on the encoder. |
| 855 | |
| 856 | :param x_start: the [N x C x ...] tensor of inputs. |
| 857 | :return: a batch of [N] KL values (in bits), one per batch element. |
| 858 | """ |
| 859 | batch_size = x_start.shape[0] |
| 860 | t = th.tensor([self.num_timesteps - 1] * batch_size, device=x_start.device) |
| 861 | qt_mean, _, qt_log_variance = self.q_mean_variance(x_start, t) |
| 862 | kl_prior = normal_kl(mean1=qt_mean, logvar1=qt_log_variance, mean2=0.0, logvar2=0.0) |
| 863 | return mean_flat(kl_prior) / np.log(2.0) |
| 864 | |
| 865 | def calc_bpd_loop(self, model, x_start, clip_denoised=False, model_kwargs=None): |
| 866 | """ |
no test coverage detected