Python torch.clamp() Examples
The following are 30
code examples of torch.clamp().
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: DDPAE-video-prediction Author: jthsieh File: DDPAE.py License: MIT License | 6 votes |
def test(self, input, output): ''' Return decoded output. ''' input = Variable(input.cuda()) batch_size, _, _, H, W = input.size() output = Variable(output.cuda()) gt = torch.cat([input, output], dim=1) latent = self.encode(input, sample=False) decoded_output, components = self.decode(latent, input.size(0)) decoded_output = decoded_output.view(*gt.size()) components = components.view(batch_size, self.n_frames_total, self.total_components, self.n_channels, H, W) latent['components'] = components decoded_output = decoded_output.clamp(0, 1) self.save_visuals(gt, decoded_output, components, latent) return decoded_output.cpu(), latent
Example #2
Source Project: BAMnet Author: hugochan File: modules.py License: Apache License 2.0 | 6 votes |
def enc_ans_features(self, x_type_bow, x_types, x_type_bow_len, x_path_bow, x_paths, x_path_bow_len, x_ctx_ents, x_ctx_ent_len, x_ctx_ent_num): ''' x_types: answer type x_paths: answer path, i.e., bow of relation x_ctx_ents: answer context, i.e., bow of entity words, (batch_size, num_cands, num_ctx, L) ''' # ans_types = torch.mean(self.ent_type_embed(x_types.view(-1, x_types.size(-1))), 1).view(x_types.size(0), x_types.size(1), -1) ans_type_bow = (self.lstm_enc_type(x_type_bow.view(-1, x_type_bow.size(-1)), x_type_bow_len.view(-1))[1]).view(x_type_bow.size(0), x_type_bow.size(1), -1) ans_path_bow = (self.lstm_enc_path(x_path_bow.view(-1, x_path_bow.size(-1)), x_path_bow_len.view(-1))[1]).view(x_path_bow.size(0), x_path_bow.size(1), -1) ans_paths = torch.mean(self.relation_embed(x_paths.view(-1, x_paths.size(-1))), 1).view(x_paths.size(0), x_paths.size(1), -1) # Avg over ctx ctx_num_mask = create_mask(x_ctx_ent_num.view(-1), x_ctx_ents.size(2), self.use_cuda).view(x_ctx_ent_num.shape + (-1,)) ans_ctx_ent = (self.lstm_enc_ctx(x_ctx_ents.view(-1, x_ctx_ents.size(-1)), x_ctx_ent_len.view(-1))[1]).view(x_ctx_ents.size(0), x_ctx_ents.size(1), x_ctx_ents.size(2), -1) ans_ctx_ent = ctx_num_mask.unsqueeze(-1) * ans_ctx_ent ans_ctx_ent = torch.sum(ans_ctx_ent, dim=2) / torch.clamp(x_ctx_ent_num.float().unsqueeze(-1), min=VERY_SMALL_NUMBER) if self.ans_enc_dropout: # ans_types = F.dropout(ans_types, p=self.ans_enc_dropout, training=self.training) ans_type_bow = F.dropout(ans_type_bow, p=self.ans_enc_dropout, training=self.training) ans_path_bow = F.dropout(ans_path_bow, p=self.ans_enc_dropout, training=self.training) ans_paths = F.dropout(ans_paths, p=self.ans_enc_dropout, training=self.training) ans_ctx_ent = F.dropout(ans_ctx_ent, p=self.ans_enc_dropout, training=self.training) return ans_type_bow, None, ans_path_bow, ans_paths, ans_ctx_ent
Example #3
Source Project: easy-faster-rcnn.pytorch Author: potterhsu File: bbox.py License: MIT License | 6 votes |
def iou(source: Tensor, other: Tensor) -> Tensor: source, other = source.unsqueeze(dim=-2).repeat(1, 1, other.shape[-2], 1), \ other.unsqueeze(dim=-3).repeat(1, source.shape[-2], 1, 1) source_area = (source[..., 2] - source[..., 0]) * (source[..., 3] - source[..., 1]) other_area = (other[..., 2] - other[..., 0]) * (other[..., 3] - other[..., 1]) intersection_left = torch.max(source[..., 0], other[..., 0]) intersection_top = torch.max(source[..., 1], other[..., 1]) intersection_right = torch.min(source[..., 2], other[..., 2]) intersection_bottom = torch.min(source[..., 3], other[..., 3]) intersection_width = torch.clamp(intersection_right - intersection_left, min=0) intersection_height = torch.clamp(intersection_bottom - intersection_top, min=0) intersection_area = intersection_width * intersection_height return intersection_area / (source_area + other_area - intersection_area)
Example #4
Source Project: audio Author: pytorch File: transforms.py License: BSD 2-Clause "Simplified" License | 6 votes |
def forward(self, waveform: Tensor) -> Tensor: r""" Args: waveform (Tensor): Tensor of audio of dimension (..., time). Returns: Tensor: Tensor of audio of dimension (..., time). """ if self.gain_type == "amplitude": waveform = waveform * self.gain if self.gain_type == "db": waveform = F.gain(waveform, self.gain) if self.gain_type == "power": waveform = F.gain(waveform, 10 * math.log10(self.gain)) return torch.clamp(waveform, -1, 1)
Example #5
Source Project: JEM Author: wgrathwohl File: eval_wrn_ebm.py License: Apache License 2.0 | 6 votes |
def cond_samples(f, replay_buffer, args, device, fresh=False): sqrt = lambda x: int(t.sqrt(t.Tensor([x]))) plot = lambda p, x: tv.utils.save_image(t.clamp(x, -1, 1), p, normalize=True, nrow=sqrt(x.size(0))) if fresh: replay_buffer = uncond_samples(f, args, device, save=False) n_it = replay_buffer.size(0) // 100 all_y = [] for i in range(n_it): x = replay_buffer[i * 100: (i + 1) * 100].to(device) y = f.classify(x).max(1)[1] all_y.append(y) all_y = t.cat(all_y, 0) each_class = [replay_buffer[all_y == l] for l in range(10)] print([len(c) for c in each_class]) for i in range(100): this_im = [] for l in range(10): this_l = each_class[l][i * 10: (i + 1) * 10] this_im.append(this_l) this_im = t.cat(this_im, 0) if this_im.size(0) > 0: plot('{}/samples_{}.png'.format(args.save_dir, i), this_im) print(i)
Example #6
Source Project: CSD-SSD Author: soo89 File: box_utils.py License: MIT License | 6 votes |
def intersect(box_a, box_b): """ We resize both tensors to [A,B,2] without new malloc: [A,2] -> [A,1,2] -> [A,B,2] [B,2] -> [1,B,2] -> [A,B,2] Then we compute the area of intersect between box_a and box_b. Args: box_a: (tensor) bounding boxes, Shape: [A,4]. box_b: (tensor) bounding boxes, Shape: [B,4]. Return: (tensor) intersection area, Shape: [A,B]. """ A = box_a.size(0) B = box_b.size(0) max_xy = torch.min(box_a[:, 2:].unsqueeze(1).expand(A, B, 2), box_b[:, 2:].unsqueeze(0).expand(A, B, 2)) min_xy = torch.max(box_a[:, :2].unsqueeze(1).expand(A, B, 2), box_b[:, :2].unsqueeze(0).expand(A, B, 2)) inter = torch.clamp((max_xy - min_xy), min=0) return inter[:, :, 0] * inter[:, :, 1]
Example #7
Source Project: ConvLab Author: ConvLab File: sil.py License: MIT License | 6 votes |
def calc_sil_policy_val_loss(self, batch, pdparams): ''' Calculate the SIL policy losses for actor and critic sil_policy_loss = -log_prob * max(R - v_pred, 0) sil_val_loss = (max(R - v_pred, 0)^2) / 2 This is called on a randomly-sample batch from experience replay ''' v_preds = self.calc_v(batch['states'], use_cache=False) rets = math_util.calc_returns(batch['rewards'], batch['dones'], self.gamma) clipped_advs = torch.clamp(rets - v_preds, min=0.0) action_pd = policy_util.init_action_pd(self.body.ActionPD, pdparams) actions = batch['actions'] if self.body.env.is_venv: actions = math_util.venv_unpack(actions) log_probs = action_pd.log_prob(actions) sil_policy_loss = - self.sil_policy_loss_coef * (log_probs * clipped_advs).mean() sil_val_loss = self.sil_val_loss_coef * clipped_advs.pow(2).mean() / 2 logger.debug(f'SIL actor policy loss: {sil_policy_loss:g}') logger.debug(f'SIL critic value loss: {sil_val_loss:g}') return sil_policy_loss, sil_val_loss
Example #8
Source Project: H3DNet Author: zaiweizhang File: nn_distance.py License: MIT License | 6 votes |
def huber_loss(error, delta=1.0): """ Args: error: Torch tensor (d1,d2,...,dk) Returns: loss: Torch tensor (d1,d2,...,dk) x = error = pred - gt or dist(pred,gt) 0.5 * |x|^2 if |x|<=d 0.5 * d^2 + d * (|x|-d) if |x|>d Ref: https://github.com/charlesq34/frustum-pointnets/blob/master/models/model_util.py """ abs_error = torch.abs(error) #quadratic = torch.min(abs_error, torch.FloatTensor([delta])) quadratic = torch.clamp(abs_error, max=delta) linear = (abs_error - quadratic) loss = 0.5 * quadratic**2 + delta * linear return loss
Example #9
Source Project: hand-detection.PyTorch Author: zllrunning File: box_utils.py License: MIT License | 6 votes |
def intersect(box_a, box_b): """ We resize both tensors to [A,B,2] without new malloc: [A,2] -> [A,1,2] -> [A,B,2] [B,2] -> [1,B,2] -> [A,B,2] Then we compute the area of intersect between box_a and box_b. Args: box_a: (tensor) bounding boxes, Shape: [A,4]. box_b: (tensor) bounding boxes, Shape: [B,4]. Return: (tensor) intersection area, Shape: [A,B]. """ A = box_a.size(0) B = box_b.size(0) max_xy = torch.min(box_a[:, 2:].unsqueeze(1).expand(A, B, 2), box_b[:, 2:].unsqueeze(0).expand(A, B, 2)) min_xy = torch.max(box_a[:, :2].unsqueeze(1).expand(A, B, 2), box_b[:, :2].unsqueeze(0).expand(A, B, 2)) inter = torch.clamp((max_xy - min_xy), min=0) return inter[:, :, 0] * inter[:, :, 1]
Example #10
Source Project: connecting_the_dots Author: autonomousvision File: networks.py License: MIT License | 6 votes |
def tforward(self, disp, edge=None): self.sobel=self.sobel.to(disp.device) if edge is not None: grad = self.sobel(disp) grad = torch.sqrt(grad[:,0:1,...]**2 + grad[:,1:2,...]**2 + 1e-8) pdf = (1-edge)/self.b0 * torch.exp(-torch.abs(grad)/self.b0) + \ edge/self.b1 * torch.exp(-torch.abs(grad)/self.b1) val = torch.mean(-torch.log(pdf.clamp(min=1e-4))) else: # on qifeng's data we don't have ambient info # therefore we supress edge everywhere grad = self.sobel(disp) grad = torch.sqrt(grad[:,0:1,...]**2 + grad[:,1:2,...]**2 + 1e-8) grad= torch.clamp(grad, 0, 1.0) val = torch.mean(grad) return val
Example #11
Source Project: connecting_the_dots Author: autonomousvision File: networks.py License: MIT License | 6 votes |
def fwd(self, depth0, depth1, R0, t0, R1, t1): uv1, d1 = super().tforward(depth0, R0, t0, R1, t1) uv1[..., 0] = 2 * (uv1[..., 0] / (self.im_width-1) - 0.5) uv1[..., 1] = 2 * (uv1[..., 1] / (self.im_height-1) - 0.5) uv1 = uv1.view(-1, self.im_height, self.im_width, 2).clone() depth10 = torch.nn.functional.grid_sample(depth1, uv1, padding_mode='border') diff = torch.abs(d1.view(-1) - depth10.view(-1)) if self.clamp > 0: diff = torch.clamp(diff, 0, self.clamp) # return diff without clamping for debugging return diff.mean()
Example #12
Source Project: ssds.pytorch Author: ShuangXieIrene File: box_utils.py License: MIT License | 6 votes |
def intersect(box_a, box_b): """ We resize both tensors to [A,B,2] without new malloc: [A,2] -> [A,1,2] -> [A,B,2] [B,2] -> [1,B,2] -> [A,B,2] Then we compute the area of intersect between box_a and box_b. Args: box_a: (tensor) bounding boxes, Shape: [A,4]. box_b: (tensor) bounding boxes, Shape: [B,4]. Return: (tensor) intersection area, Shape: [A,B]. """ A = box_a.size(0) B = box_b.size(0) max_xy = torch.min(box_a[:, 2:].unsqueeze(1).expand(A, B, 2), box_b[:, 2:].unsqueeze(0).expand(A, B, 2)) min_xy = torch.max(box_a[:, :2].unsqueeze(1).expand(A, B, 2), box_b[:, :2].unsqueeze(0).expand(A, B, 2)) inter = torch.clamp((max_xy - min_xy), min=0) return inter[:, :, 0] * inter[:, :, 1]
Example #13
Source Project: Parsing-R-CNN Author: soeaver File: boxlist_ops.py License: MIT License | 6 votes |
def boxes_to_masks(boxes, h, w, padding=0.0): n = boxes.shape[0] boxes = boxes x1 = boxes[:, 0] y1 = boxes[:, 1] x2 = boxes[:, 2] y2 = boxes[:, 3] b_w = x2 - x1 b_h = y2 - y1 x1 = torch.clamp(x1 - 1 - b_w * padding, min=0) x2 = torch.clamp(x2 + 1 + b_w * padding, max=w) y1 = torch.clamp(y1 - 1 - b_h * padding, min=0) y2 = torch.clamp(y2 + 1 + b_h * padding, max=h) rows = torch.arange(w, device=boxes.device, dtype=x1.dtype).view(1, 1, -1).expand(n, h, w) cols = torch.arange(h, device=boxes.device, dtype=x1.dtype).view(1, -1, 1).expand(n, h, w) masks_left = rows >= x1.view(-1, 1, 1) masks_right = rows < x2.view(-1, 1, 1) masks_up = cols >= y1.view(-1, 1, 1) masks_down = cols < y2.view(-1, 1, 1) masks = masks_left * masks_right * masks_up * masks_down return masks
Example #14
Source Project: Parsing-R-CNN Author: soeaver File: boxlist_ops.py License: MIT License | 6 votes |
def crop_by_box(masks, box, padding=0.0): n, h, w = masks.size() b_w = box[2] - box[0] b_h = box[3] - box[1] x1 = torch.clamp(box[0:1] - b_w * padding - 1, min=0) x2 = torch.clamp(box[2:3] + b_w * padding + 1, max=w - 1) y1 = torch.clamp(box[1:2] - b_h * padding - 1, min=0) y2 = torch.clamp(box[3:4] + b_h * padding + 1, max=h - 1) rows = torch.arange(w, device=masks.device, dtype=x1.dtype).view(1, 1, -1).expand(n, h, w) cols = torch.arange(h, device=masks.device, dtype=x1.dtype).view(1, -1, 1).expand(n, h, w) masks_left = rows >= x1.expand(n, 1, 1) masks_right = rows < x2.expand(n, 1, 1) masks_up = cols >= y1.expand(n, 1, 1) masks_down = cols < y2.expand(n, 1, 1) crop_mask = masks_left * masks_right * masks_up * masks_down return masks * crop_mask.float(), crop_mask
Example #15
Source Project: seamseg Author: mapillary File: detection.py License: BSD 3-Clause "New" or "Revised" License | 6 votes |
def _split_and_clip(boxes, scores, index, valid_size): boxes_out, scores_out = [], [] for img_id, valid_size_i in enumerate(valid_size): idx = index == img_id if idx.any().item(): boxes_i = boxes[idx] boxes_i[:, :, [0, 2]] = torch.clamp(boxes_i[:, :, [0, 2]], min=0, max=valid_size_i[0]) boxes_i[:, :, [1, 3]] = torch.clamp(boxes_i[:, :, [1, 3]], min=0, max=valid_size_i[1]) boxes_out.append(boxes_i) scores_out.append(scores[idx]) else: boxes_out.append(None) scores_out.append(None) return boxes_out, scores_out
Example #16
Source Project: seamseg Author: mapillary File: instance_seg.py License: BSD 3-Clause "New" or "Revised" License | 6 votes |
def _split_and_clip(boxes, scores, index, valid_size): boxes_out, scores_out = [], [] for img_id, valid_size_i in enumerate(valid_size): idx = index == img_id if idx.any().item(): boxes_i = boxes[idx] boxes_i[:, :, [0, 2]] = torch.clamp(boxes_i[:, :, [0, 2]], min=0, max=valid_size_i[0]) boxes_i[:, :, [1, 3]] = torch.clamp(boxes_i[:, :, [1, 3]], min=0, max=valid_size_i[1]) boxes_out.append(boxes_i) scores_out.append(scores[idx]) else: boxes_out.append(None) scores_out.append(None) return boxes_out, scores_out
Example #17
Source Project: yolo2-pytorch Author: ruiminshen File: torch.py License: GNU Lesser General Public License v3.0 | 6 votes |
def intersection_area(yx_min1, yx_max1, yx_min2, yx_max2): """ Calculates the intersection area of two lists of bounding boxes. :author 申瑞珉 (Ruimin Shen) :param yx_min1: The top left coordinates (y, x) of the first list (size [N1, 2]) of bounding boxes. :param yx_max1: The bottom right coordinates (y, x) of the first list (size [N1, 2]) of bounding boxes. :param yx_min2: The top left coordinates (y, x) of the second list (size [N2, 2]) of bounding boxes. :param yx_max2: The bottom right coordinates (y, x) of the second list (size [N2, 2]) of bounding boxes. :return: The matrix (size [N1, N2]) of the intersection area. """ ymin1, xmin1 = torch.split(yx_min1, 1, -1) ymax1, xmax1 = torch.split(yx_max1, 1, -1) ymin2, xmin2 = torch.split(yx_min2, 1, -1) ymax2, xmax2 = torch.split(yx_max2, 1, -1) max_ymin = torch.max(ymin1.repeat(1, ymin2.size(0)), torch.transpose(ymin2, 0, 1).repeat(ymin1.size(0), 1)) # PyTorch's bug min_ymax = torch.min(ymax1.repeat(1, ymax2.size(0)), torch.transpose(ymax2, 0, 1).repeat(ymax1.size(0), 1)) # PyTorch's bug height = torch.clamp(min_ymax - max_ymin, min=0) max_xmin = torch.max(xmin1.repeat(1, xmin2.size(0)), torch.transpose(xmin2, 0, 1).repeat(xmin1.size(0), 1)) # PyTorch's bug min_xmax = torch.min(xmax1.repeat(1, xmax2.size(0)), torch.transpose(xmax2, 0, 1).repeat(xmax1.size(0), 1)) # PyTorch's bug width = torch.clamp(min_xmax - max_xmin, min=0) return height * width
Example #18
Source Project: yolo2-pytorch Author: ruiminshen File: torch.py License: GNU Lesser General Public License v3.0 | 6 votes |
def batch_intersection_area(yx_min1, yx_max1, yx_min2, yx_max2): """ Calculates the intersection area of two lists of bounding boxes for N independent batches. :author 申瑞珉 (Ruimin Shen) :param yx_min1: The top left coordinates (y, x) of the first lists (size [N, N1, 2]) of bounding boxes. :param yx_max1: The bottom right coordinates (y, x) of the first lists (size [N, N1, 2]) of bounding boxes. :param yx_min2: The top left coordinates (y, x) of the second lists (size [N, N2, 2]) of bounding boxes. :param yx_max2: The bottom right coordinates (y, x) of the second lists (size [N, N2, 2]) of bounding boxes. :return: The matrics (size [N, N1, N2]) of the intersection area. """ ymin1, xmin1 = torch.split(yx_min1, 1, -1) ymax1, xmax1 = torch.split(yx_max1, 1, -1) ymin2, xmin2 = torch.split(yx_min2, 1, -1) ymax2, xmax2 = torch.split(yx_max2, 1, -1) max_ymin = torch.max(ymin1.repeat(1, 1, ymin2.size(1)), torch.transpose(ymin2, 1, 2).repeat(1, ymin1.size(1), 1)) # PyTorch's bug min_ymax = torch.min(ymax1.repeat(1, 1, ymax2.size(1)), torch.transpose(ymax2, 1, 2).repeat(1, ymax1.size(1), 1)) # PyTorch's bug height = torch.clamp(min_ymax - max_ymin, min=0) max_xmin = torch.max(xmin1.repeat(1, 1, xmin2.size(1)), torch.transpose(xmin2, 1, 2).repeat(1, xmin1.size(1), 1)) # PyTorch's bug min_xmax = torch.min(xmax1.repeat(1, 1, xmax2.size(1)), torch.transpose(xmax2, 1, 2).repeat(1, xmax1.size(1), 1)) # PyTorch's bug width = torch.clamp(min_xmax - max_xmin, min=0) return height * width
Example #19
Source Project: yolo2-pytorch Author: ruiminshen File: torch.py License: GNU Lesser General Public License v3.0 | 6 votes |
def batch_iou_pair(yx_min1, yx_max1, yx_min2, yx_max2, min=float(np.finfo(np.float32).eps)): """ Pairwisely calculates the IoU of two lists (at the same size M) of bounding boxes for N independent batches. :author 申瑞珉 (Ruimin Shen) :param yx_min1: The top left coordinates (y, x) of the first lists (size [N, M, 2]) of bounding boxes. :param yx_max1: The bottom right coordinates (y, x) of the first lists (size [N, M, 2]) of bounding boxes. :param yx_min2: The top left coordinates (y, x) of the second lists (size [N, M, 2]) of bounding boxes. :param yx_max2: The bottom right coordinates (y, x) of the second lists (size [N, M, 2]) of bounding boxes. :return: The lists (size [N, M]) of the IoU. """ yx_min = torch.max(yx_min1, yx_min2) yx_max = torch.min(yx_max1, yx_max2) size = torch.clamp(yx_max - yx_min, min=0) intersect_area = torch.prod(size, -1) area1 = torch.prod(yx_max1 - yx_min1, -1) area2 = torch.prod(yx_max2 - yx_min2, -1) union_area = torch.clamp(area1 + area2 - intersect_area, min=min) return intersect_area / union_area
Example #20
Source Project: pneumothorax-segmentation Author: sneddy File: Losses.py License: MIT License | 6 votes |
def forward(self, outputs, targets): loss = 0 weights = self.weights sigmoid_input = torch.sigmoid(outputs) for k, v in weights.items(): if not v: continue val = 0 if k in self.per_channel: channels = targets.size(1) for c in range(channels): if not self.channel_losses or k in self.channel_losses[c]: val += self.channel_weights[c] * self.mapping[k](sigmoid_input[:, c, ...] if k in self.expect_sigmoid else outputs[:, c, ...], targets[:, c, ...]) else: val = self.mapping[k](sigmoid_input if k in self.expect_sigmoid else outputs, targets) self.values[k] = val loss += self.weights[k] * val return loss.clamp(min=1e-5)
Example #21
Source Project: DDPAE-video-prediction Author: jthsieh File: DDPAE.py License: MIT License | 5 votes |
def constrain_pose(self, pose): ''' Constrain the value of the pose vectors. ''' # Makes training faster. scale = torch.clamp(pose[..., :1], self.scale - 1, self.scale + 1) xy = F.tanh(pose[..., 1:]) * (scale - 0.5) pose = torch.cat([scale, xy], dim=-1) return pose
Example #22
Source Project: DDPAE-video-prediction Author: jthsieh File: DDPAE.py License: MIT License | 5 votes |
def get_output(self, components, latent): ''' Take the sum of the components. ''' # components: batch_size x n_frames_total x total_components x C x H x W batch_size = components.size(0) # Sum the components output = torch.sum(components, dim=2) output = torch.clamp(output, max=1) return output
Example #23
Source Project: mmdetection Author: open-mmlab File: free_anchor_retina_head.py License: Apache License 2.0 | 5 votes |
def positive_bag_loss(self, matched_cls_prob, matched_box_prob): """Compute positive bag loss. :math:`-log( Mean-max(P_{ij}^{cls} * P_{ij}^{loc}) )`. :math:`P_{ij}^{cls}`: matched_cls_prob, classification probability of matched samples. :math:`P_{ij}^{loc}`: matched_box_prob, box probability of matched samples. Args: matched_cls_prob (Tensor): Classification probabilty of matched samples in shape (num_gt, pre_anchor_topk). matched_box_prob (Tensor): BBox probability of matched samples, in shape (num_gt, pre_anchor_topk). Returns: Tensor: Positive bag loss in shape (num_gt,). """ # noqa: E501, W605 # bag_prob = Mean-max(matched_prob) matched_prob = matched_cls_prob * matched_box_prob weight = 1 / torch.clamp(1 - matched_prob, 1e-12, None) weight /= weight.sum(dim=1).unsqueeze(dim=-1) bag_prob = (weight * matched_prob).sum(dim=1) # positive_bag_loss = -self.alpha * log(bag_prob) return self.alpha * F.binary_cross_entropy( bag_prob, torch.ones_like(bag_prob), reduction='none')
Example #24
Source Project: easy-faster-rcnn.pytorch Author: potterhsu File: bbox.py License: MIT License | 5 votes |
def clip(bboxes: Tensor, left: float, top: float, right: float, bottom: float) -> Tensor: bboxes[..., [0, 2]] = bboxes[..., [0, 2]].clamp(min=left, max=right) bboxes[..., [1, 3]] = bboxes[..., [1, 3]].clamp(min=top, max=bottom) return bboxes
Example #25
Source Project: audio Author: pytorch File: functional.py License: BSD 2-Clause "Simplified" License | 5 votes |
def amplitude_to_DB( x: Tensor, multiplier: float, amin: float, db_multiplier: float, top_db: Optional[float] = None ) -> Tensor: r"""Turn a tensor from the power/amplitude scale to the decibel scale. This output depends on the maximum value in the input tensor, and so may return different values for an audio clip split into snippets vs. a a full clip. Args: x (Tensor): Input tensor before being converted to decibel scale multiplier (float): Use 10. for power and 20. for amplitude amin (float): Number to clamp ``x`` db_multiplier (float): Log10(max(reference value and amin)) top_db (float or None, optional): Minimum negative cut-off in decibels. A reasonable number is 80. (Default: ``None``) Returns: Tensor: Output tensor in decibel scale """ x_db = multiplier * torch.log10(torch.clamp(x, min=amin)) x_db -= multiplier * db_multiplier if top_db is not None: x_db = x_db.clamp(min=x_db.max().item() - top_db) return x_db
Example #26
Source Project: L3C-PyTorch Author: fab-jul File: logistic_mixture.py License: GNU General Public License v3.0 | 5 votes |
def _extract_non_shared(self, x, l): """ :param x: targets, NCHW :param l: output of net, NKpHW, see above :return: x NC1HW, logit_probs NCKHW (probabilites of scales, i.e., \pi_k) means NCKHW, log_scales NCKHW (variances), K (number of mixtures) """ N, C, H, W = x.shape Kp = l.shape[1] K = non_shared_get_K(Kp, C) # we have, for each channel: K pi / K mu / K sigma / [K coeffs] # note that this only holds for C=3 as for other channels, there would be more than 3*K coeffs # but non_shared only holds for the C=3 case l = l.reshape(N, self._num_params, C, K, H, W) logit_probs = l[:, 0, ...] # NCKHW means = l[:, 1, ...] # NCKHW log_scales = torch.clamp(l[:, 2, ...], min=_LOG_SCALES_MIN) # NCKHW, is >= -7 x = x.reshape(N, C, 1, H, W) if self.use_coeffs: assert C == 3 # Coefficients only supported for C==3, see note where we define _NUM_PARAMS_RGB coeffs = self._nonshared_coeffs_act(l[:, 3, ...]) # NCKHW, basically coeffs_g_r, coeffs_b_r, coeffs_b_g means_r, means_g, means_b = means[:, 0, ...], means[:, 1, ...], means[:, 2, ...] # each NKHW coeffs_g_r, coeffs_b_r, coeffs_b_g = coeffs[:, 0, ...], coeffs[:, 1, ...], coeffs[:, 2, ...] # each NKHW means = torch.stack( (means_r, means_g + coeffs_g_r * x[:, 0, ...], means_b + coeffs_b_r * x[:, 0, ...] + coeffs_b_g * x[:, 1, ...]), dim=1) # NCKHW again assert means.shape == (N, C, K, H, W), (means.shape, (N, C, K, H, W)) return x, logit_probs, means, log_scales, K
Example #27
Source Project: L3C-PyTorch Author: fab-jul File: logistic_mixture.py License: GNU General Public License v3.0 | 5 votes |
def _extract_non_shared_c(self, c, C, l, x=None): """ Same as _extract_non_shared but only for c-th channel, used to get CDF """ assert c < C, f'{c} >= {C}' N, Kp, H, W = l.shape K = non_shared_get_K(Kp, C) l = l.reshape(N, self._num_params, C, K, H, W) logit_probs_c = l[:, 0, c, ...] # NKHW means_c = l[:, 1, c, ...] # NKHW log_scales_c = torch.clamp(l[:, 2, c, ...], min=_LOG_SCALES_MIN) # NKHW, is >= -7 if self.use_coeffs and c != 0: unscaled_coeffs = l[:, 3, ...] # NCKHW, coeffs_g_r, coeffs_b_r, coeffs_b_g if c == 1: assert x is not None coeffs_g_r = torch.sigmoid(unscaled_coeffs[:, 0, ...]) # NKHW means_c += coeffs_g_r * x[:, 0, ...] elif c == 2: assert x is not None coeffs_b_r = torch.sigmoid(unscaled_coeffs[:, 1, ...]) # NKHW coeffs_b_g = torch.sigmoid(unscaled_coeffs[:, 2, ...]) # NKHW means_c += coeffs_b_r * x[:, 0, ...] + coeffs_b_g * x[:, 1, ...] # NKHW NKHW NKHW return logit_probs_c, means_c, log_scales_c, K
Example #28
Source Project: L3C-PyTorch Author: fab-jul File: logistic_mixture.py License: GNU General Public License v3.0 | 5 votes |
def _iter_Kdim_normalized(t, normalize=True): """ normalizes t, then iterates over Kdim (1st dimension) """ K = t.shape[0] if normalize: lo, hi = float(t.min()), float(t.max()) t = t.clamp(min=lo, max=hi).add_(-lo).div_(hi - lo + 1e-5) for k in range(min(_MAX_K_FOR_VIS, K)): yield t[k, ...] # HW
Example #29
Source Project: JEM Author: wgrathwohl File: eval_wrn_ebm.py License: Apache License 2.0 | 5 votes |
def uncond_samples(f, args, device, save=True): sqrt = lambda x: int(t.sqrt(t.Tensor([x]))) plot = lambda p, x: tv.utils.save_image(t.clamp(x, -1, 1), p, normalize=True, nrow=sqrt(x.size(0))) replay_buffer = t.FloatTensor(args.buffer_size, 3, 32, 32).uniform_(-1, 1) for i in range(args.n_sample_steps): samples = sample_q(args, device, f, replay_buffer) if i % args.print_every == 0 and save: plot('{}/samples_{}.png'.format(args.save_dir, i), samples) print(i) return replay_buffer
Example #30
Source Project: DeepLung Author: uci-cbcl File: transforms.py License: GNU General Public License v3.0 | 5 votes |
def resample1d(inp,inp_space,out_space=1): #Output shape print inp.size(), inp_space, out_space out_shape = list(np.int64(inp.size()[:-1]))+[int(np.floor(inp.size()[-1]*inp_space/out_space))] #Optional for if we expect a float_tensor out_shape = [int(item) for item in out_shape] # Get output coordinates, deltas, and t (chord distances) # torch.cuda.set_device(inp.get_device()) # Output coordinates in real space coords = torch.cuda.HalfTensor(range(out_shape[-1]))*out_space delta = coords.fmod(inp_space).div(inp_space).repeat(out_shape[0],out_shape[1],1) t = torch.cuda.HalfTensor(4,out_shape[0],out_shape[1],out_shape[2]).zero_() t[0] = 1 t[1] = delta t[2] = delta**2 t[3] = delta**3 # Nearest neighbours indices nn = coords.div(inp_space).floor().long() # Stack the nearest neighbors into P, the Points Array P = torch.cuda.HalfTensor(4,out_shape[0],out_shape[1],out_shape[2]).zero_() for i in range(-1,3): P[i+1] = inp.index_select(2,torch.clamp(nn+i,0,inp.size()[-1]-1)) #Take catmull-rom spline interpolation: return 0.5*t.mul(torch.cuda.HalfTensor([[ 0, 2, 0, 0], [-1, 0, 1, 0], [ 2, -5, 4, -1], [ -1, 3, -3, 1]]).mm(P.view(4,-1))\ .view(4, out_shape[0], out_shape[1], out_shape[2]))\ .sum(0)\ .squeeze()