Python torch.exp() Examples
The following are 30
code examples of torch.exp().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
torch
, or try the search function
.

Example #1
Source Project: pruning_yolov3 Author: zbyuan File: utils.py License: GNU General Public License v3.0 | 8 votes |
def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() # Compares the two methods for width-height anchor multiplication # https://github.com/ultralytics/yolov3/issues/168 x = np.arange(-4.0, 4.0, .1) ya = np.exp(x) yb = torch.sigmoid(torch.from_numpy(x)).numpy() * 2 fig = plt.figure(figsize=(6, 3), dpi=150) plt.plot(x, ya, '.-', label='yolo method') plt.plot(x, yb ** 2, '.-', label='^2 power method') plt.plot(x, yb ** 2.5, '.-', label='^2.5 power method') plt.xlim(left=-4, right=4) plt.ylim(bottom=0, top=6) plt.xlabel('input') plt.ylabel('output') plt.legend() fig.tight_layout() fig.savefig('comparison.png', dpi=200)
Example #2
Source Project: treelstm.pytorch Author: dasguptar File: trainer.py License: MIT License | 6 votes |
def test(self, dataset): self.model.eval() with torch.no_grad(): total_loss = 0.0 predictions = torch.zeros(len(dataset), dtype=torch.float, device='cpu') indices = torch.arange(1, dataset.num_classes + 1, dtype=torch.float, device='cpu') for idx in tqdm(range(len(dataset)), desc='Testing epoch ' + str(self.epoch) + ''): ltree, linput, rtree, rinput, label = dataset[idx] target = utils.map_label_to_target(label, dataset.num_classes) linput, rinput = linput.to(self.device), rinput.to(self.device) target = target.to(self.device) output = self.model(ltree, linput, rtree, rinput) loss = self.criterion(output, target) total_loss += loss.item() output = output.squeeze().to('cpu') predictions[idx] = torch.dot(indices, torch.exp(output)) return total_loss / len(dataset), predictions
Example #3
Source Project: transferlearning Author: jindongwang File: mmd.py License: MIT License | 6 votes |
def guassian_kernel(self, source, target, kernel_mul=2.0, kernel_num=5, fix_sigma=None): n_samples = int(source.size()[0]) + int(target.size()[0]) total = torch.cat([source, target], dim=0) total0 = total.unsqueeze(0).expand( int(total.size(0)), int(total.size(0)), int(total.size(1))) total1 = total.unsqueeze(1).expand( int(total.size(0)), int(total.size(0)), int(total.size(1))) L2_distance = ((total0-total1)**2).sum(2) if fix_sigma: bandwidth = fix_sigma else: bandwidth = torch.sum(L2_distance.data) / (n_samples**2-n_samples) bandwidth /= kernel_mul ** (kernel_num // 2) bandwidth_list = [bandwidth * (kernel_mul**i) for i in range(kernel_num)] kernel_val = [torch.exp(-L2_distance / bandwidth_temp) for bandwidth_temp in bandwidth_list] return sum(kernel_val)
Example #4
Source Project: transferlearning Author: jindongwang File: mmd_pytorch.py License: MIT License | 6 votes |
def guassian_kernel(self, source, target, kernel_mul=2.0, kernel_num=5, fix_sigma=None): n_samples = int(source.size()[0]) + int(target.size()[0]) total = torch.cat([source, target], dim=0) total0 = total.unsqueeze(0).expand( int(total.size(0)), int(total.size(0)), int(total.size(1))) total1 = total.unsqueeze(1).expand( int(total.size(0)), int(total.size(0)), int(total.size(1))) L2_distance = ((total0-total1)**2).sum(2) if fix_sigma: bandwidth = fix_sigma else: bandwidth = torch.sum(L2_distance.data) / (n_samples**2-n_samples) bandwidth /= kernel_mul ** (kernel_num // 2) bandwidth_list = [bandwidth * (kernel_mul**i) for i in range(kernel_num)] kernel_val = [torch.exp(-L2_distance / bandwidth_temp) for bandwidth_temp in bandwidth_list] return sum(kernel_val)
Example #5
Source Project: medicaldetectiontoolkit Author: MIC-DKFZ File: model_utils.py License: Apache License 2.0 | 6 votes |
def apply_box_deltas_2D(boxes, deltas): """Applies the given deltas to the given boxes. boxes: [N, 4] where each row is y1, x1, y2, x2 deltas: [N, 4] where each row is [dy, dx, log(dh), log(dw)] """ # Convert to y, x, h, w height = boxes[:, 2] - boxes[:, 0] width = boxes[:, 3] - boxes[:, 1] center_y = boxes[:, 0] + 0.5 * height center_x = boxes[:, 1] + 0.5 * width # Apply deltas center_y += deltas[:, 0] * height center_x += deltas[:, 1] * width height *= torch.exp(deltas[:, 2]) width *= torch.exp(deltas[:, 3]) # Convert back to y1, x1, y2, x2 y1 = center_y - 0.5 * height x1 = center_x - 0.5 * width y2 = y1 + height x2 = x1 + width result = torch.stack([y1, x1, y2, x2], dim=1) return result
Example #6
Source Project: audio Author: pytorch File: functional.py License: BSD 2-Clause "Simplified" License | 6 votes |
def mu_law_decoding( x_mu: Tensor, quantization_channels: int ) -> Tensor: r"""Decode mu-law encoded signal. For more info see the `Wikipedia Entry <https://en.wikipedia.org/wiki/%CE%9C-law_algorithm>`_ This expects an input with values between 0 and quantization_channels - 1 and returns a signal scaled between -1 and 1. Args: x_mu (Tensor): Input tensor quantization_channels (int): Number of channels Returns: Tensor: Input after mu-law decoding """ mu = quantization_channels - 1.0 if not x_mu.is_floating_point(): x_mu = x_mu.to(torch.float) mu = torch.tensor(mu, dtype=x_mu.dtype) x = ((x_mu) / mu) * 2 - 1.0 x = torch.sign(x) * (torch.exp(torch.abs(x) * torch.log1p(mu)) - 1.0) / mu return x
Example #7
Source Project: overhaul-distillation Author: clovaai File: loss.py License: MIT License | 6 votes |
def FocalLoss(self, logit, target, gamma=2, alpha=0.5): n, c, h, w = logit.size() criterion = nn.CrossEntropyLoss(weight=self.weight, ignore_index=self.ignore_index, size_average=self.size_average) if self.cuda: criterion = criterion.cuda() logpt = -criterion(logit, target.long()) pt = torch.exp(logpt) if alpha is not None: logpt *= alpha loss = -((1 - pt) ** gamma) * logpt if self.batch_average: loss /= n return loss
Example #8
Source Project: MSDNet-PyTorch Author: kalviny File: adaptive_inference.py License: MIT License | 6 votes |
def dynamic_evaluate(model, test_loader, val_loader, args): tester = Tester(model, args) if os.path.exists(os.path.join(args.save, 'logits_single.pth')): val_pred, val_target, test_pred, test_target = \ torch.load(os.path.join(args.save, 'logits_single.pth')) else: val_pred, val_target = tester.calc_logit(val_loader) test_pred, test_target = tester.calc_logit(test_loader) torch.save((val_pred, val_target, test_pred, test_target), os.path.join(args.save, 'logits_single.pth')) flops = torch.load(os.path.join(args.save, 'flops.pth')) with open(os.path.join(args.save, 'dynamic.txt'), 'w') as fout: for p in range(1, 40): print("*********************") _p = torch.FloatTensor(1).fill_(p * 1.0 / 20) probs = torch.exp(torch.log(_p) * torch.range(1, args.nBlocks)) probs /= probs.sum() acc_val, _, T = tester.dynamic_eval_find_threshold( val_pred, val_target, probs, flops) acc_test, exp_flops = tester.dynamic_eval_with_threshold( test_pred, test_target, flops, T) print('valid acc: {:.3f}, test acc: {:.3f}, test flops: {:.2f}M'.format(acc_val, acc_test, exp_flops / 1e6)) fout.write('{}\t{}\n'.format(acc_test, exp_flops.item()))
Example #9
Source Project: MSDNet-PyTorch Author: kalviny File: adaptive_inference.py License: MIT License | 6 votes |
def dynamic_eval_with_threshold(self, logits, targets, flops, T): n_stage, n_sample, _ = logits.size() max_preds, argmax_preds = logits.max(dim=2, keepdim=False) # take the max logits as confidence acc_rec, exp = torch.zeros(n_stage), torch.zeros(n_stage) acc, expected_flops = 0, 0 for i in range(n_sample): gold_label = targets[i] for k in range(n_stage): if max_preds[k][i].item() >= T[k]: # force to exit at k _g = int(gold_label.item()) _pred = int(argmax_preds[k][i].item()) if _g == _pred: acc += 1 acc_rec[k] += 1 exp[k] += 1 break acc_all, sample_all = 0, 0 for k in range(n_stage): _t = exp[k] * 1.0 / n_sample sample_all += exp[k] expected_flops += _t * flops[k] acc_all += acc_rec[k] return acc * 100.0 / n_sample, expected_flops
Example #10
Source Project: CSD-SSD Author: soo89 File: box_utils.py License: MIT License | 6 votes |
def decode(loc, priors, variances): """Decode locations from predictions using priors to undo the encoding we did for offset regression at train time. Args: loc (tensor): location predictions for loc layers, Shape: [num_priors,4] priors (tensor): Prior boxes in center-offset form. Shape: [num_priors,4]. variances: (list[float]) Variances of priorboxes Return: decoded bounding box predictions """ boxes = torch.cat(( priors[:, :2] + loc[:, :2] * variances[0] * priors[:, 2:], priors[:, 2:] * torch.exp(loc[:, 2:] * variances[1])), 1) boxes[:, :2] -= boxes[:, 2:] / 2 boxes[:, 2:] += boxes[:, :2] return boxes
Example #11
Source Project: ConvLab Author: ConvLab File: tsd_net.py License: MIT License | 6 votes |
def forward(self, z_enc_out, u_enc_out, u_input_np, m_t_input, degree_input, last_hidden, z_input_np): sparse_z_input = Variable(self.get_sparse_selective_input(z_input_np), requires_grad=False) m_embed = self.emb(m_t_input) z_context = self.attn_z(last_hidden, z_enc_out) u_context = self.attn_u(last_hidden, u_enc_out) gru_in = torch.cat([m_embed, u_context, z_context, degree_input.unsqueeze(0)], dim=2) gru_out, last_hidden = self.gru(gru_in, last_hidden) gen_score = self.proj(torch.cat([z_context, u_context, gru_out], 2)).squeeze(0) z_copy_score = F.tanh(self.proj_copy2(z_enc_out.transpose(0, 1))) z_copy_score = torch.matmul(z_copy_score, gru_out.squeeze(0).unsqueeze(2)).squeeze(2) z_copy_score = z_copy_score.cpu() z_copy_score_max = torch.max(z_copy_score, dim=1, keepdim=True)[0] z_copy_score = torch.exp(z_copy_score - z_copy_score_max) # [B,T] z_copy_score = torch.log(torch.bmm(z_copy_score.unsqueeze(1), sparse_z_input)).squeeze( 1) + z_copy_score_max # [B,V] z_copy_score = cuda_(z_copy_score) scores = F.softmax(torch.cat([gen_score, z_copy_score], dim=1), dim=1) gen_score, z_copy_score = scores[:, :cfg.vocab_size], \ scores[:, cfg.vocab_size:] proba = gen_score + z_copy_score[:, :cfg.vocab_size] # [B,V] proba = torch.cat([proba, z_copy_score[:, cfg.vocab_size:]], 1) return proba, last_hidden, gru_out
Example #12
Source Project: Collaborative-Learning-for-Weakly-Supervised-Object-Detection Author: Sunarker File: bbox_transform.py License: MIT License | 5 votes |
def bbox_transform_inv(boxes, deltas): # Input should be both tensor or both Variable and on the same device if len(boxes) == 0: return deltas.detach() * 0 widths = boxes[:, 2] - boxes[:, 0] + 1.0 heights = boxes[:, 3] - boxes[:, 1] + 1.0 ctr_x = boxes[:, 0] + 0.5 * widths ctr_y = boxes[:, 1] + 0.5 * heights dx = deltas[:, 0::4] dy = deltas[:, 1::4] dw = deltas[:, 2::4] dh = deltas[:, 3::4] pred_ctr_x = dx * widths.unsqueeze(1) + ctr_x.unsqueeze(1) pred_ctr_y = dy * heights.unsqueeze(1) + ctr_y.unsqueeze(1) pred_w = torch.exp(dw) * widths.unsqueeze(1) pred_h = torch.exp(dh) * heights.unsqueeze(1) pred_boxes = torch.cat(\ [_.unsqueeze(2) for _ in [pred_ctr_x - 0.5 * pred_w,\ pred_ctr_y - 0.5 * pred_h,\ pred_ctr_x + 0.5 * pred_w,\ pred_ctr_y + 0.5 * pred_h]], 2).view(len(boxes), -1) return pred_boxes
Example #13
Source Project: controllable-text-attribute-transfer Author: Nrgeup File: model2.py License: Apache License 2.0 | 5 votes |
def __init__(self, d_model, dropout, max_len=5000): super(PositionalEncoding, self).__init__() self.dropout = nn.Dropout(p=dropout) # Compute the positional encodings once in log space. pe = torch.zeros(max_len, d_model) position = torch.arange(0, max_len).unsqueeze(1) div_term = torch.exp(torch.arange(0, d_model, 2) * -(math.log(10000.0) / d_model)) pe[:, 0::2] = torch.sin(position * div_term) pe[:, 1::2] = torch.cos(position * div_term) pe = pe.unsqueeze(0) self.register_buffer('pe', pe)
Example #14
Source Project: controllable-text-attribute-transfer Author: Nrgeup File: model.py License: Apache License 2.0 | 5 votes |
def __init__(self, d_model, dropout, max_len=5000): super(PositionalEncoding, self).__init__() self.dropout = nn.Dropout(p=dropout) # Compute the positional encodings once in log space. pe = torch.zeros(max_len, d_model) position = torch.arange(0, max_len).unsqueeze(1) div_term = torch.exp(torch.arange(0, d_model, 2) * -(math.log(10000.0) / d_model)) pe[:, 0::2] = torch.sin(position * div_term) pe[:, 1::2] = torch.cos(position * div_term) pe = pe.unsqueeze(0) self.register_buffer('pe', pe)
Example #15
Source Project: controllable-text-attribute-transfer Author: Nrgeup File: model2.py License: Apache License 2.0 | 5 votes |
def __init__(self, d_model, dropout, max_len=5000): super(PositionalEncoding, self).__init__() self.dropout = nn.Dropout(p=dropout) # Compute the positional encodings once in log space. pe = torch.zeros(max_len, d_model) position = torch.arange(0, max_len).unsqueeze(1) div_term = torch.exp(torch.arange(0, d_model, 2) * -(math.log(10000.0) / d_model)) pe[:, 0::2] = torch.sin(position * div_term) pe[:, 1::2] = torch.cos(position * div_term) pe = pe.unsqueeze(0) self.register_buffer('pe', pe)
Example #16
Source Project: controllable-text-attribute-transfer Author: Nrgeup File: model.py License: Apache License 2.0 | 5 votes |
def __init__(self, d_model, dropout, max_len=5000): super(PositionalEncoding, self).__init__() self.dropout = nn.Dropout(p=dropout) # Compute the positional encodings once in log space. pe = torch.zeros(max_len, d_model) position = torch.arange(0, max_len).unsqueeze(1) div_term = torch.exp(torch.arange(0, d_model, 2) * -(math.log(10000.0) / d_model)) pe[:, 0::2] = torch.sin(position * div_term) pe[:, 1::2] = torch.cos(position * div_term) pe = pe.unsqueeze(0) self.register_buffer('pe', pe)
Example #17
Source Project: controllable-text-attribute-transfer Author: Nrgeup File: model2.py License: Apache License 2.0 | 5 votes |
def __init__(self, d_model, dropout, max_len=5000): super(PositionalEncoding, self).__init__() self.dropout = nn.Dropout(p=dropout) # Compute the positional encodings once in log space. pe = torch.zeros(max_len, d_model) position = torch.arange(0, max_len).unsqueeze(1) div_term = torch.exp(torch.arange(0, d_model, 2) * -(math.log(10000.0) / d_model)) pe[:, 0::2] = torch.sin(position * div_term) pe[:, 1::2] = torch.cos(position * div_term) pe = pe.unsqueeze(0) self.register_buffer('pe', pe)
Example #18
Source Project: hgraph2graph Author: wengong-jin File: hgnn.py License: MIT License | 5 votes |
def rsample(self, z_vecs, W_mean, W_var, perturb=True): batch_size = z_vecs.size(0) z_mean = W_mean(z_vecs) z_log_var = -torch.abs( W_var(z_vecs) ) kl_loss = -0.5 * torch.sum(1.0 + z_log_var - z_mean * z_mean - torch.exp(z_log_var)) / batch_size epsilon = torch.randn_like(z_mean).cuda() z_vecs = z_mean + torch.exp(z_log_var / 2) * epsilon if perturb else z_mean return z_vecs, kl_loss
Example #19
Source Project: hgraph2graph Author: wengong-jin File: hgnn.py License: MIT License | 5 votes |
def rsample(self, z_vecs, W_mean, W_var): batch_size = z_vecs.size(0) z_mean = W_mean(z_vecs) z_log_var = -torch.abs( W_var(z_vecs) ) kl_loss = -0.5 * torch.sum(1.0 + z_log_var - z_mean * z_mean - torch.exp(z_log_var)) / batch_size epsilon = torch.randn_like(z_mean).cuda() z_vecs = z_mean + torch.exp(z_log_var / 2) * epsilon return z_vecs, kl_loss
Example #20
Source Project: hgraph2graph Author: wengong-jin File: hgnn.py License: MIT License | 5 votes |
def rsample(self, z_vecs, W_mean, W_var): batch_size = z_vecs.size(0) z_mean = W_mean(z_vecs) z_log_var = -torch.abs( W_var(z_vecs) ) kl_loss = -0.5 * torch.sum(1.0 + z_log_var - z_mean * z_mean - torch.exp(z_log_var)) / batch_size epsilon = torch.randn_like(z_mean).cuda() z_vecs = z_mean + torch.exp(z_log_var / 2) * epsilon return z_vecs, kl_loss
Example #21
Source Project: mmdetection Author: open-mmlab File: reppoints_head.py License: Apache License 2.0 | 5 votes |
def gen_grid_from_reg(self, reg, previous_boxes): """Base on the previous bboxes and regression values, we compute the regressed bboxes and generate the grids on the bboxes. :param reg: the regression value to previous bboxes. :param previous_boxes: previous bboxes. :return: generate grids on the regressed bboxes. """ b, _, h, w = reg.shape bxy = (previous_boxes[:, :2, ...] + previous_boxes[:, 2:, ...]) / 2. bwh = (previous_boxes[:, 2:, ...] - previous_boxes[:, :2, ...]).clamp(min=1e-6) grid_topleft = bxy + bwh * reg[:, :2, ...] - 0.5 * bwh * torch.exp( reg[:, 2:, ...]) grid_wh = bwh * torch.exp(reg[:, 2:, ...]) grid_left = grid_topleft[:, [0], ...] grid_top = grid_topleft[:, [1], ...] grid_width = grid_wh[:, [0], ...] grid_height = grid_wh[:, [1], ...] intervel = torch.linspace(0., 1., self.dcn_kernel).view( 1, self.dcn_kernel, 1, 1).type_as(reg) grid_x = grid_left + grid_width * intervel grid_x = grid_x.unsqueeze(1).repeat(1, self.dcn_kernel, 1, 1, 1) grid_x = grid_x.view(b, -1, h, w) grid_y = grid_top + grid_height * intervel grid_y = grid_y.unsqueeze(2).repeat(1, 1, self.dcn_kernel, 1, 1) grid_y = grid_y.view(b, -1, h, w) grid_yx = torch.stack([grid_y, grid_x], dim=2) grid_yx = grid_yx.view(b, -1, h, w) regressed_bbox = torch.cat([ grid_left, grid_top, grid_left + grid_width, grid_top + grid_height ], 1) return grid_yx, regressed_bbox
Example #22
Source Project: Random-Erasing Author: zhunzhong07 File: visualize.py License: Apache License 2.0 | 5 votes |
def gauss(x,a,b,c): return torch.exp(-torch.pow(torch.add(x,-b),2).div(2*c*c)).mul(a)
Example #23
Source Project: pytorch_NER_BiLSTM_CNN_CRF Author: bamtercelboo File: CRF.py License: Apache License 2.0 | 5 votes |
def log_sum_exp(vec, m_size): """ Args: vec: size=(batch_size, vanishing_dim, hidden_dim) m_size: hidden_dim Returns: size=(batch_size, hidden_dim) """ _, idx = torch.max(vec, 1) # B * 1 * M max_score = torch.gather(vec, 1, idx.view(-1, 1, m_size)).view(-1, 1, m_size) # B * M return max_score.view(-1, m_size) + torch.log(torch.sum( torch.exp(vec - max_score.expand_as(vec)), 1)).view(-1, m_size)
Example #24
Source Project: pruning_yolov3 Author: zbyuan File: utils.py License: GNU General Public License v3.0 | 5 votes |
def forward(self, input, target): loss = self.loss_fcn(input, target) loss *= self.alpha * (1.000001 - torch.exp(-loss)) ** self.gamma # non-zero power for gradient stability if self.reduction == 'mean': return loss.mean() elif self.reduction == 'sum': return loss.sum() else: # 'none' return loss
Example #25
Source Project: ACAN Author: miraiaroha File: losses.py License: MIT License | 5 votes |
def NormalDist(x, sigma): f = torch.exp(-x**2/(2*sigma**2)) / sqrt(2*pi*sigma**2) return f
Example #26
Source Project: ACAN Author: miraiaroha File: losses.py License: MIT License | 5 votes |
def get_ohem_label(self, pred, label): n, c, h, w = pred.size() if self.ignore_index is None: self.ignore_index = c + 1 input_label = label.data.cpu().numpy().ravel().astype(np.int32) x = np.rollaxis(pred.data.cpu().numpy(), 1).reshape((c, -1)) input_prob = np.exp(x - x.max(axis=0, keepdims=True)) input_prob /= input_prob.sum(axis=0, keepdims=True) valid_flag = input_label != self.ignore_index valid_inds = np.where(valid_flag)[0] valid_label = input_label[valid_flag] num_valid = valid_flag.sum() if self.min_kept >= num_valid: print('Labels: {}'.format(num_valid)) elif num_valid > 0: valid_prob = input_prob[:,valid_flag] valid_prob = valid_prob[valid_label, np.arange(len(valid_label), dtype=np.int32)] threshold = self.thresh if self.min_kept > 0: index = valid_prob.argsort() threshold_index = index[ min(len(index), self.min_kept) - 1 ] if valid_prob[threshold_index] > self.thresh: threshold = valid_prob[threshold_index] kept_flag = valid_prob <= threshold valid_kept_inds = valid_inds[kept_flag] valid_inds = valid_kept_inds self.ohem_ratio = len(valid_inds) / num_valid #print('Max prob: {:.4f}, hard ratio: {:.4f} = {} / {} '.format(input_prob.max(), self.ohem_ratio, len(valid_inds), num_valid)) valid_kept_label = input_label[valid_inds].copy() input_label.fill(self.ignore_index) input_label[valid_inds] = valid_kept_label #valid_flag_new = input_label != self.ignore_index # print(np.sum(valid_flag_new)) label = torch.from_numpy(input_label.reshape(label.size())).long().cuda() return label
Example #27
Source Project: ACAN Author: miraiaroha File: model.py License: MIT License | 5 votes |
def discrete2continuous(depth, d_min, d_max, n_c): depth = torch.exp(depth / (n_c - 1) * np.log(d_max / d_min) + np.log(d_min)) return depth
Example #28
Source Project: ACAN Author: miraiaroha File: model.py License: MIT License | 5 votes |
def decode_ord(self, y): batch_size, prob, height, width = y.shape y = torch.reshape(y, (batch_size, prob//2, 2, height, width)) denominator = torch.sum(torch.exp(y), 2) pred_score = torch.div(torch.exp(y[:, :, 1, :, :]), denominator) return pred_score
Example #29
Source Project: ACAN Author: miraiaroha File: model.py License: MIT License | 5 votes |
def soft_cross_entropy(self, pred_score, d_min, d_max, n_c): pred_prob = F.softmax(pred_score, dim=1).permute((0, 2, 3, 1)) weight = torch.arange(n_c).float().cuda() weight = weight * np.log(d_max / d_min) / (n_c - 1) + np.log(d_min) weight = weight.unsqueeze(-1) output = torch.exp(torch.matmul(pred_prob, weight)) output = output.permute((0, 3, 1, 2)) return output
Example #30
Source Project: End-to-end-ASR-Pytorch Author: Alexander-H-Liu File: train_lm.py License: MIT License | 5 votes |
def validate(self): # Eval mode self.model.eval() dev_loss = [] for i, data in enumerate(self.dv_set): self.progress('Valid step - {}/{}'.format(i+1, len(self.dv_set))) # Fetch data txt, txt_len = self.fetch_data(data) # Forward model with torch.no_grad(): pred, _ = self.model(txt[:, :-1], txt_len) lm_loss = self.seq_loss( pred.view(-1, self.vocab_size), txt[:, 1:].reshape(-1)) dev_loss.append(lm_loss) # Ckpt if performance improves dev_loss = sum(dev_loss)/len(dev_loss) dev_ppx = torch.exp(dev_loss).cpu().item() if dev_loss < self.best_loss: self.best_loss = dev_loss self.save_checkpoint('best_ppx.pth', 'perplexity', dev_ppx) self.write_log('entropy', {'dv': dev_loss}) self.write_log('perplexity', {'dv': dev_ppx}) # Show some example of last batch on tensorboard for i in range(min(len(txt), self.DEV_N_EXAMPLE)): if self.step == 1: self.write_log('true_text{}'.format( i), self.tokenizer.decode(txt[i].tolist())) self.write_log('pred_text{}'.format(i), self.tokenizer.decode( pred[i].argmax(dim=-1).tolist())) # Resume training self.model.train()