本文整理汇总了Python中torch.log函数的典型用法代码示例。如果您正苦于以下问题:Python log函数的具体用法?Python log怎么用?Python log使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了log函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: sample_from_discretized_mix_logistic_1d
def sample_from_discretized_mix_logistic_1d(l, nr_mix):
# Pytorch ordering
l = l.permute(0, 2, 3, 1)
ls = [int(y) for y in l.size()]
xs = ls[:-1] + [1] #[3]
# unpack parameters
logit_probs = l[:, :, :, :nr_mix]
l = l[:, :, :, nr_mix:].contiguous().view(xs + [nr_mix * 2]) # for mean, scale
# sample mixture indicator from softmax
temp = torch.FloatTensor(logit_probs.size())
if l.is_cuda : temp = temp.cuda()
temp.uniform_(1e-5, 1. - 1e-5)
temp = logit_probs.data - torch.log(- torch.log(temp))
_, argmax = temp.max(dim=3)
one_hot = to_one_hot(argmax, nr_mix)
sel = one_hot.view(xs[:-1] + [1, nr_mix])
# select logistic parameters
means = torch.sum(l[:, :, :, :, :nr_mix] * sel, dim=4)
log_scales = torch.clamp(torch.sum(
l[:, :, :, :, nr_mix:2 * nr_mix] * sel, dim=4), min=-7.)
u = torch.FloatTensor(means.size())
if l.is_cuda : u = u.cuda()
u.uniform_(1e-5, 1. - 1e-5)
u = Variable(u)
x = means + torch.exp(log_scales) * (torch.log(u) - torch.log(1. - u))
x0 = torch.clamp(torch.clamp(x[:, :, :, 0], min=-1.), max=1.)
out = x0.unsqueeze(1)
return out
开发者ID:insperatum,项目名称:vhe,代码行数:31,代码来源:utils.py
示例2: forward
def forward(self, feat, right, wrong, batch_wrong, fake=None, fake_diff_mask=None):
num_wrong = wrong.size(1)
batch_size = feat.size(0)
feat = feat.view(-1, self.ninp, 1)
right_dis = torch.bmm(right.view(-1, 1, self.ninp), feat)
wrong_dis = torch.bmm(wrong, feat)
batch_wrong_dis = torch.bmm(batch_wrong, feat)
wrong_score = torch.sum(torch.exp(wrong_dis - right_dis.expand_as(wrong_dis)),1) \
+ torch.sum(torch.exp(batch_wrong_dis - right_dis.expand_as(batch_wrong_dis)),1)
loss_dis = torch.sum(torch.log(wrong_score + 1))
loss_norm = right.norm() + feat.norm() + wrong.norm() + batch_wrong.norm()
if fake:
fake_dis = torch.bmm(fake.view(-1, 1, self.ninp), feat)
fake_score = torch.masked_select(torch.exp(fake_dis - right_dis), fake_diff_mask)
margin_score = F.relu(torch.log(fake_score + 1) - self.margin)
loss_fake = torch.sum(margin_score)
loss_dis += loss_fake
loss_norm += fake.norm()
loss = (loss_dis + 0.1 * loss_norm) / batch_size
if fake:
return loss, loss_fake.data[0] / batch_size
else:
return loss
开发者ID:AashishV,项目名称:visDial.pytorch,代码行数:30,代码来源:model.py
示例3: relax_grad2
def relax_grad2(x, logits, b, surrogate, mixtureweights):
B = logits.shape[0]
C = logits.shape[1]
cat = Categorical(logits=logits)
# u = torch.rand(B,C).clamp(1e-10, 1.-1e-10).cuda()
u = myclamp(torch.rand(B,C).cuda())
gumbels = -torch.log(-torch.log(u))
z = logits + gumbels
# b = torch.argmax(z, dim=1) #.view(B,1)
logq = cat.log_prob(b).view(B,1)
surr_input = torch.cat([z, x, logits.detach()], dim=1)
cz = surrogate.net(surr_input)
z_tilde = sample_relax_given_b(logits, b)
surr_input = torch.cat([z_tilde, x, logits.detach()], dim=1)
cz_tilde = surrogate.net(surr_input)
logpx_given_z = logprob_undercomponent(x, component=b)
logpz = torch.log(mixtureweights[b]).view(B,1)
logpxz = logpx_given_z + logpz #[B,1]
f = logpxz - logq
net_loss = - torch.mean( (f.detach() - cz_tilde.detach()) * logq - logq + cz - cz_tilde )
grad = torch.autograd.grad([net_loss], [logits], create_graph=True, retain_graph=True)[0] #[B,C]
pb = torch.exp(logq)
return grad, pb
开发者ID:chriscremer,项目名称:Other_Code,代码行数:30,代码来源:gmm_cleaned_v6.py
示例4: pixelcnn_generate
def pixelcnn_generate(self, z1, z2):
# Sampling from PixelCNN
x_zeros = torch.zeros(
(z1.size(0), self.args.input_size[0], self.args.input_size[1], self.args.input_size[2]))
if self.args.cuda:
x_zeros = x_zeros.cuda()
for i in range(self.args.input_size[1]):
for j in range(self.args.input_size[2]):
samples_mean, samples_logvar = self.p_x(Variable(x_zeros, volatile=True), z1, z2)
samples_mean = samples_mean.view(samples_mean.size(0), self.args.input_size[0], self.args.input_size[1],
self.args.input_size[2])
if self.args.input_type == 'binary':
probs = samples_mean[:, :, i, j].data
x_zeros[:, :, i, j] = torch.bernoulli(probs).float()
samples_gen = samples_mean
elif self.args.input_type == 'gray' or self.args.input_type == 'continuous':
binsize = 1. / 256.
samples_logvar = samples_logvar.view(samples_mean.size(0), self.args.input_size[0],
self.args.input_size[1], self.args.input_size[2])
means = samples_mean[:, :, i, j].data
logvar = samples_logvar[:, :, i, j].data
# sample from logistic distribution
u = torch.rand(means.size()).cuda()
y = torch.log(u) - torch.log(1. - u)
sample = means + torch.exp(logvar) * y
x_zeros[:, :, i, j] = torch.floor(sample / binsize) * binsize
samples_gen = samples_mean
return samples_gen
开发者ID:jramapuram,项目名称:vae_vampprior,代码行数:32,代码来源:PixelHVAE_2level.py
示例5: _mu_law
def _mu_law(self, x):
m = self._variable(torch.FloatTensor(1))
m[:] = self.n_categories + 1
s = torch.sign(x)
x = torch.abs(x)
x = s * (torch.log(1 + (self.n_categories * x)) / torch.log(m))
return x
开发者ID:JohnVinyard,项目名称:zounds,代码行数:7,代码来源:sample_embedding.py
示例6: norm_flow
def norm_flow(self, params, z, v, logposterior):
h = F.tanh(params[0][0](z))
mew_ = params[0][1](h)
sig_ = F.sigmoid(params[0][2](h)+5.) #[PB,Z]
z_reshaped = z.view(self.P, self.B, self.z_size)
gradients = torch.autograd.grad(outputs=logposterior(z_reshaped), inputs=z_reshaped,
grad_outputs=self.grad_outputs,
create_graph=True, retain_graph=True, only_inputs=True)[0]
gradients = gradients.detach()
gradients = gradients.view(-1,self.z_size)
v = v*sig_ + mew_*gradients
logdet = torch.sum(torch.log(sig_), 1)
h = F.tanh(params[1][0](v))
mew_ = params[1][1](h)
sig_ = F.sigmoid(params[1][2](h)+5.) #[PB,Z]
z = z*sig_ + mew_*v
logdet2 = torch.sum(torch.log(sig_), 1)
#[PB]
logdet = logdet + logdet2
#[PB,Z], [PB]
return z, v, logdet
开发者ID:chriscremer,项目名称:Other_Code,代码行数:35,代码来源:approx_posteriors_v6.py
示例7: compute_loss
def compute_loss(self, outputs, masks, labels):
"""
Our implementation of weighted BCE loss.
"""
labels = labels.view(-1)
masks = masks.view(-1)
outputs = outputs.view(-1)
# Generate the weights
ones = torch.sum(labels)
total = labels.nelement()
weights = torch.FloatTensor(outputs.size()).type_as(outputs.data)
weights[labels.long() == 1] = 1.0 - ones / total
weights[labels.long() == 0] = ones / total
weights = weights.view(weights.size(0), 1).expand(weights.size(0), 2)
# Generate the log outputs
outputs = outputs.clamp(min=1e-8)
log_outputs = torch.log(outputs)
neg_outputs = 1.0 - outputs
neg_outputs = neg_outputs.clamp(min=1e-8)
neg_log_outputs = torch.log(neg_outputs)
all_outputs = torch.cat((log_outputs.view(-1, 1), neg_log_outputs.view(-1, 1)), 1)
all_values = all_outputs.mul(torch.autograd.Variable(weights))
all_labels = torch.autograd.Variable(torch.cat((labels.view(-1, 1), (1.0 - labels).view(-1, 1)), 1))
all_masks = torch.autograd.Variable(torch.cat((masks.view(-1, 1), masks.view(-1, 1)), 1))
loss = -torch.sum(all_values.mul(all_labels).mul(all_masks)) / outputs.size(0)
return loss
开发者ID:OwalnutO,项目名称:SST,代码行数:29,代码来源:models.py
示例8: sample_relax
def sample_relax(logits, surrogate):
cat = Categorical(logits=logits)
u = torch.rand(B,C).clamp(1e-10, 1.-1e-10).cuda()
gumbels = -torch.log(-torch.log(u))
z = logits + gumbels
b = torch.argmax(z, dim=1) #.view(B,1)
logprob = cat.log_prob(b).view(B,1)
# czs = []
# for j in range(1):
# z = sample_relax_z(logits)
# surr_input = torch.cat([z, x, logits.detach()], dim=1)
# cz = surrogate.net(surr_input)
# czs.append(cz)
# czs = torch.stack(czs)
# cz = torch.mean(czs, dim=0)#.view(1,1)
surr_input = torch.cat([z, x, logits.detach()], dim=1)
cz = surrogate.net(surr_input)
cz_tildes = []
for j in range(1):
z_tilde = sample_relax_given_b(logits, b)
surr_input = torch.cat([z_tilde, x, logits.detach()], dim=1)
cz_tilde = surrogate.net(surr_input)
cz_tildes.append(cz_tilde)
cz_tildes = torch.stack(cz_tildes)
cz_tilde = torch.mean(cz_tildes, dim=0) #.view(B,1)
return b, logprob, cz, cz_tilde
开发者ID:chriscremer,项目名称:Other_Code,代码行数:31,代码来源:gmm_cleaned_v5.py
示例9: log_Bernoulli
def log_Bernoulli(x, mean, average=False, dim=None):
probs = torch.clamp( mean, min=min_epsilon, max=max_epsilon )
log_bernoulli = x * torch.log( probs ) + (1. - x ) * torch.log( 1. - probs )
if average:
return torch.mean( log_bernoulli, dim )
else:
return torch.sum( log_bernoulli, dim )
开发者ID:jramapuram,项目名称:vae_vampprior,代码行数:7,代码来源:distributions.py
示例10: bbox_transform
def bbox_transform(anchor_rois, gt_rois):
"""
:param anchor_rois <torch.Tensor>:
:param gt_rois <torch.Tensor>:
:return:
"""
anchor_widths = anchor_rois[:, 3] - anchor_rois[:, 0]
anchor_heights = anchor_rois[:, 4] - anchor_rois[:, 1]
anchor_lengths = anchor_rois[:, 5] - anchor_rois[:, 2]
anchor_ctr_x = anchor_rois[:, 0] + 0.5 * anchor_widths
anchor_ctr_y = anchor_rois[:, 1] + 0.5 * anchor_heights
anchor_ctr_z = anchor_rois[:, 2] + 0.5 * anchor_lengths
gt_widths = gt_rois[:, 3] - gt_rois[:, 0]
gt_heights = gt_rois[:, 4] - gt_rois[:, 1]
gt_lengths = gt_rois[:, 5] - gt_rois[:, 2]
gt_ctr_x = gt_rois[:, 0] + 0.5 * gt_widths
gt_ctr_y = gt_rois[:, 1] + 0.5 * gt_heights
gt_ctr_z = gt_rois[:, 2] + 0.5 * gt_lengths
targets_dx = (gt_ctr_x - anchor_ctr_x) / (anchor_widths + 1e-14)
targets_dy = (gt_ctr_y - anchor_ctr_y) / (anchor_heights + 1e-14)
targets_dz = (gt_ctr_z - anchor_ctr_z) / (anchor_lengths + 1e-14)
targets_dw = torch.log(gt_widths / (anchor_widths + 1e-14) + 1e-14)
targets_dh = torch.log(gt_heights / (anchor_heights + 1e-14) + 1e-14)
targets_dl = torch.log(gt_lengths / (anchor_lengths + 1e-14) + 1e-14)
targets = torch.stack([targets_dx, targets_dy, targets_dz, targets_dw, targets_dh, targets_dl], 1)
return targets
开发者ID:caskeep,项目名称:3D-SIS,代码行数:34,代码来源:bbox_transform.py
示例11: reverse_flow
def reverse_flow(self, z):
B = z.shape[0]
C = z.shape[1]
f = self.flows
logdet = 0.
reverse_ = list(range(self.n_flows))[::-1]
for i in reverse_:
z1 = z[:,:C//2]
z2 = z[:,C//2:]
sig1 = torch.sigmoid(f[str(i)]['f2_sig'](z1))
mu1 = f[str(i)]['f2_mu'](z1)
z2 = (z2 - mu1) / sig1
sig2 = torch.sigmoid(f[str(i)]['f1_sig'](z2))
mu2 = f[str(i)]['f1_mu'](z2)
z1 = (z1 - mu2) / sig2
z = torch.cat([z1,z2],1)
z = z[:,f[str(i)]['inv_perm']]
sig1 = sig1.view(B, -1)
sig2 = sig2.view(B, -1)
logdet += torch.sum(torch.log(sig1), 1)
logdet += torch.sum(torch.log(sig2), 1)
return z, logdet
开发者ID:chriscremer,项目名称:Other_Code,代码行数:30,代码来源:distributions.py
示例12: forward
def forward(self, input):
n = len(input)
embeds = self.input_fun(input)
# pick first node
scores = self.scores(embeds, 0, 0)
choice = self.choice(n, scores)
picks = [choice]
loss = -torch.log(scores[choice]) / n
outputs = []
for i, e in enumerate(embeds):
outputs.append(self.output)
if picks[-1] > i:
# skip elements until next node
continue
lstm_out, self.hidden = self.lstm(e.view(1, 1, -1), self.hidden)
self.output = self.output_fun(lstm_out.view(1, -1))
if len(picks) < self.subset:
# pick next node
scores = self.scores(embeds, len(picks), i + 1)
choice = self.choice(n, scores)
picks.append(choice)
loss -= torch.log(scores[choice]) / (n - i)
return loss, outputs, picks
开发者ID:gsig,项目名称:srnn,代码行数:26,代码来源:srnn.py
示例13: predictive_elbo
def predictive_elbo(self, x, k, s):
# No pW or qW
self.B = x.size()[0] #batch size
# self.k = k #number of z samples aka particles P
# self.s = s #number of W samples
elbo1s = []
for i in range(s):
Ws, logpW, logqW = self.sample_W() #_ , [1], [1]
mu, logvar = self.encode(x) #[B,Z]
z, logpz, logqz = self.sample_z(mu, logvar, k=k) #[P,B,Z], [P,B]
x_hat = self.decode(Ws, z) #[P,B,X]
logpx = log_bernoulli(x_hat, x) #[P,B]
elbo = logpx + logpz - logqz #[P,B]
if k>1:
max_ = torch.max(elbo, 0)[0] #[B]
elbo = torch.log(torch.mean(torch.exp(elbo - max_), 0)) + max_ #[B]
# elbo1 = elbo1 #+ (logpW - logqW)*.00000001 #[B], logp(x|W)p(w)/q(w)
elbo1s.append(elbo)
elbo1s = torch.stack(elbo1s) #[S,B]
if s>1:
max_ = torch.max(elbo1s, 0)[0] #[B]
elbo1 = torch.log(torch.mean(torch.exp(elbo1s - max_), 0)) + max_ #[B]
elbo = torch.mean(elbo1s) #[1]
return elbo#, logprobs2[0], logprobs2[1], logprobs2[2], logprobs2[3], logprobs2[4]
开发者ID:chriscremer,项目名称:Other_Code,代码行数:32,代码来源:bvae_pytorch4_plot_true_posterior.py
示例14: get_probs_and_logits
def get_probs_and_logits(ps=None, logits=None, is_multidimensional=True):
"""
Convert probability values to logits, or vice-versa. Either ``ps`` or
``logits`` should be specified, but not both.
:param ps: tensor of probabilities. Should be in the interval *[0, 1]*.
If, ``is_multidimensional = True``, then must be normalized along
axis -1.
:param logits: tensor of logit values. For the multidimensional case,
the values, when exponentiated along the last dimension, must sum
to 1.
:param is_multidimensional: determines the computation of ps from logits,
and vice-versa. For the multi-dimensional case, logit values are
assumed to be log probabilities, whereas for the uni-dimensional case,
it specifically refers to log odds.
:return: tuple containing raw probabilities and logits as tensors.
"""
assert (ps is None) != (logits is None)
if ps is not None:
eps = _get_clamping_buffer(ps)
ps_clamped = ps.clamp(min=eps, max=1 - eps)
if is_multidimensional:
if ps is None:
ps = softmax(logits, -1)
else:
logits = torch.log(ps_clamped)
else:
if ps is None:
ps = F.sigmoid(logits)
else:
logits = torch.log(ps_clamped) - torch.log1p(-ps_clamped)
return ps, logits
开发者ID:Magica-Chen,项目名称:pyro,代码行数:32,代码来源:util.py
示例15: poisson_nll_loss
def poisson_nll_loss(input, target, log_input=True, full=False, size_average=True):
r"""Poisson negative log likelihood loss.
See :class:`~torch.nn.PoissonNLLLoss` for details.
Args:
input: expectation of underlying Poisson distribution.
target: random sample :math:`target \sim Pois(input)`.
log_input: if True the loss is computed as
`exp(input) - target * input`, if False then loss is
`input - target * log(input)`. Default: True
full: whether to compute full loss, i. e. to add the Stirling
approximation term. Default: False
`target * log(target) - target + 0.5 * log(2 * pi * target)`.
size_average: By default, the losses are averaged over observations for
each minibatch. However, if the field sizeAverage is set to False,
the losses are instead summed for each minibatch. Default: True
"""
if log_input:
loss = torch.exp(input) - target * input
else:
loss = input - target * torch.log(input)
if full:
mask = target > 1
loss[mask] += (target * torch.log(target) - target + 0.5 * torch.log(2 * math.pi * target))[mask]
if size_average:
return torch.mean(loss)
else:
return torch.sum(loss)
开发者ID:athiwatp,项目名称:pytorch,代码行数:29,代码来源:functional.py
示例16: train
def train(ep):
model.train()
total_loss = 0
count = 0
train_idx_list = np.arange(len(X_train), dtype="int32")
np.random.shuffle(train_idx_list)
for idx in train_idx_list:
data_line = X_train[idx]
x, y = Variable(data_line[:-1]), Variable(data_line[1:])
if args.cuda:
x, y = x.cuda(), y.cuda()
optimizer.zero_grad()
output = model(x.unsqueeze(0)).squeeze(0)
loss = -torch.trace(torch.matmul(y, torch.log(output).float().t()) +
torch.matmul((1 - y), torch.log(1 - output).float().t()))
total_loss += loss.data[0]
count += output.size(0)
if args.clip > 0:
torch.nn.utils.clip_grad_norm(model.parameters(), args.clip)
loss.backward()
optimizer.step()
if idx > 0 and idx % args.log_interval == 0:
cur_loss = total_loss / count
print("Epoch {:2d} | lr {:.5f} | loss {:.5f}".format(ep, lr, cur_loss))
total_loss = 0.0
count = 0
开发者ID:wasaCheney,项目名称:TCN,代码行数:28,代码来源:music_test.py
示例17: forward_flow
def forward_flow(self, z, xenc):
B = z.shape[0]
C = z.shape[1]
f = self.flows
logdet = 0.
for i in range(self.n_flows):
z = z[:,f[str(i)]['perm']]
z1 = z[:,:C//2]
z2 = z[:,C//2:]
sig2 = torch.sigmoid(f[str(i)]['f1_sig'](torch.cat([z2,xenc],1)))
mu2 = f[str(i)]['f1_mu'](torch.cat([z2,xenc],1))
z1 = z1*sig2 + mu2
mu1 = f[str(i)]['f2_mu'](torch.cat([z1,xenc],1))
sig1 = torch.sigmoid(f[str(i)]['f2_sig'](torch.cat([z1,xenc],1)))
z2 = z2*sig1 + mu1
z = torch.cat([z1,z2],1)
sig1 = sig1.view(B, -1)
sig2 = sig2.view(B, -1)
logdet += torch.sum(torch.log(sig1), 1)
logdet += torch.sum(torch.log(sig2), 1)
return z, logdet
开发者ID:chriscremer,项目名称:Other_Code,代码行数:28,代码来源:distributions.py
示例18: log_uniform_candidate_sampler
def log_uniform_candidate_sampler(self, targets, choice_func=_choice):
# returns sampled, true_expected_count, sampled_expected_count
# targets = (batch_size, )
#
# samples = (n_samples, )
# true_expected_count = (batch_size, )
# sampled_expected_count = (n_samples, )
# see: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/range_sampler.h
# https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/range_sampler.cc
# algorithm: keep track of number of tries when doing sampling,
# then expected count is
# -expm1(num_tries * log1p(-p))
# = (1 - (1-p)^num_tries) where p is self._probs[id]
np_sampled_ids, num_tries = choice_func(self._num_words, self._num_samples)
sampled_ids = torch.from_numpy(np_sampled_ids).to(targets.device)
# Compute expected count = (1 - (1-p)^num_tries) = -expm1(num_tries * log1p(-p))
# P(class) = (log(class + 2) - log(class + 1)) / log(range_max + 1)
target_probs = torch.log((targets.float() + 2.0) / (targets.float() + 1.0)) / self._log_num_words_p1
target_expected_count = -1.0 * (torch.exp(num_tries * torch.log1p(-target_probs)) - 1.0)
sampled_probs = torch.log((sampled_ids.float() + 2.0) /
(sampled_ids.float() + 1.0)) / self._log_num_words_p1
sampled_expected_count = -1.0 * (torch.exp(num_tries * torch.log1p(-sampled_probs)) - 1.0)
sampled_ids.requires_grad_(False)
target_expected_count.requires_grad_(False)
sampled_expected_count.requires_grad_(False)
return sampled_ids, target_expected_count, sampled_expected_count
开发者ID:ziaridoy20,项目名称:allennlp,代码行数:33,代码来源:sampled_softmax_loss.py
示例19: encode
def encode(self, reference_boxes, proposals):
"""
Encode a set of proposals with respect to some
reference boxes
Arguments:
reference_boxes (Tensor): reference boxes
proposals (Tensor): boxes to be encoded
"""
TO_REMOVE = 1 # TODO remove
ex_widths = proposals[:, 2] - proposals[:, 0] + TO_REMOVE
ex_heights = proposals[:, 3] - proposals[:, 1] + TO_REMOVE
ex_ctr_x = proposals[:, 0] + 0.5 * ex_widths
ex_ctr_y = proposals[:, 1] + 0.5 * ex_heights
gt_widths = reference_boxes[:, 2] - reference_boxes[:, 0] + TO_REMOVE
gt_heights = reference_boxes[:, 3] - reference_boxes[:, 1] + TO_REMOVE
gt_ctr_x = reference_boxes[:, 0] + 0.5 * gt_widths
gt_ctr_y = reference_boxes[:, 1] + 0.5 * gt_heights
wx, wy, ww, wh = self.weights
targets_dx = wx * (gt_ctr_x - ex_ctr_x) / ex_widths
targets_dy = wy * (gt_ctr_y - ex_ctr_y) / ex_heights
targets_dw = ww * torch.log(gt_widths / ex_widths)
targets_dh = wh * torch.log(gt_heights / ex_heights)
targets = torch.stack((targets_dx, targets_dy, targets_dw, targets_dh), dim=1)
return targets
开发者ID:laycoding,项目名称:maskrcnn-benchmark,代码行数:29,代码来源:box_coder.py
示例20: sample_relax_z
def sample_relax_z(logits):
B = logits.shape[0]
C = logits.shape[1]
u = torch.rand(B,C).clamp(1e-10, 1.-1e-10).cuda()
gumbels = -torch.log(-torch.log(u))
z = logits + gumbels
return z
开发者ID:chriscremer,项目名称:Other_Code,代码行数:8,代码来源:gmm_cleaned_v6.py
注:本文中的torch.log函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论