in qlearn/commun/local_mnf_layer.py [0:0]
def sample_z(self, batch_size, kl=True, same_noise=False):
if self.training:
if batch_size > 1:
assert kl == False
qzero_std = torch.exp(0.5 * self.qzero_logvar)
qzero_std = qzero_std.expand(batch_size, self.in_features)
z_mu = self.qzero_mu.expand(batch_size, self.in_features)
if same_noise:
epsilon_z = self.epsilon_z.expand(batch_size, self.in_features)
else:
epsilon_z = Variable(torch.randn(batch_size, self.in_features))
if self.use_cuda:
epsilon_z = epsilon_z.cuda()
z = z_mu + qzero_std * epsilon_z
z = self.flow_q(z, kl=False)
return z
if batch_size == 1:
qzero_std = torch.exp(0.5 * self.qzero_logvar)
z = self.qzero_mu + qzero_std * self.epsilon_z
if kl:
z, logdets = self.flow_q(z, kl=True)
return z, logdets
else:
z = self.flow_q(z, kl=False)
return z
else:
assert kl == False
z = self.qzero_mu
z = self.flow_q(z, kl=False)
return z