本文整理匯總了Python中torch.cat方法的典型用法代碼示例。如果您正苦於以下問題:Python torch.cat方法的具體用法?Python torch.cat怎麽用?Python torch.cat使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類torch
的用法示例。
在下文中一共展示了torch.cat方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: _get_bbox_regression_labels
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def _get_bbox_regression_labels(bbox_target_data, num_classes):
"""Bounding-box regression targets (bbox_target_data) are stored in a
compact form N x (class, tx, ty, tw, th)
This function expands those targets into the 4-of-4*K representation used
by the network (i.e. only one class has non-zero targets).
Returns:
bbox_target (ndarray): N x 4K blob of regression targets
bbox_inside_weights (ndarray): N x 4K blob of loss weights
"""
# Inputs are tensor
clss = bbox_target_data[:, 0]
bbox_targets = clss.new(clss.numel(), 4 * num_classes).zero_()
bbox_inside_weights = clss.new(bbox_targets.shape).zero_()
inds = (clss > 0).nonzero().view(-1)
if inds.numel() > 0:
clss = clss[inds].contiguous().view(-1,1)
dim1_inds = inds.unsqueeze(1).expand(inds.size(0), 4)
dim2_inds = torch.cat([4*clss, 4*clss+1, 4*clss+2, 4*clss+3], 1).long()
bbox_targets[dim1_inds, dim2_inds] = bbox_target_data[inds][:, 1:]
bbox_inside_weights[dim1_inds, dim2_inds] = bbox_targets.new(cfg.TRAIN.BBOX_INSIDE_WEIGHTS).view(-1, 4).expand_as(dim1_inds)
return bbox_targets, bbox_inside_weights
開發者ID:Sunarker,項目名稱:Collaborative-Learning-for-Weakly-Supervised-Object-Detection,代碼行數:27,代碼來源:proposal_target_layer.py
示例2: forward
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def forward(self, src, tgt, src_mask, tgt_mask):
"""
Take in and process masked src and target sequences.
"""
memory = self.encode(src, src_mask) # (batch_size, max_src_seq, d_model)
# attented_mem=self.attention(memory,memory,memory,src_mask)
# memory=attented_mem
score = self.attention(memory, memory, src_mask)
attent_memory = score.bmm(memory)
# memory=self.linear(torch.cat([memory,attent_memory],dim=-1))
memory, _ = self.gru(attented_mem)
'''
score=torch.sigmoid(self.linear(memory))
memory=memory*score
'''
latent = torch.sum(memory, dim=1) # (batch_size, d_model)
logit = self.decode(latent.unsqueeze(1), tgt, tgt_mask) # (batch_size, max_tgt_seq, d_model)
# logit,_=self.gru_decoder(logit)
prob = self.generator(logit) # (batch_size, max_seq, vocab_size)
return latent, prob
示例3: greedy_decode
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def greedy_decode(self, latent, max_len, start_id):
'''
latent: (batch_size, max_src_seq, d_model)
src_mask: (batch_size, 1, max_src_len)
'''
batch_size = latent.size(0)
ys = get_cuda(torch.ones(batch_size, 1).fill_(start_id).long()) # (batch_size, 1)
for i in range(max_len - 1):
# input("==========")
# print("="*10, i)
# print("ys", ys.size()) # (batch_size, i)
# print("tgt_mask", subsequent_mask(ys.size(1)).size()) # (1, i, i)
out = self.decode(latent.unsqueeze(1), to_var(ys), to_var(subsequent_mask(ys.size(1)).long()))
prob = self.generator(out[:, -1])
# print("prob", prob.size()) # (batch_size, vocab_size)
_, next_word = torch.max(prob, dim=1)
# print("next_word", next_word.size()) # (batch_size)
# print("next_word.unsqueeze(1)", next_word.unsqueeze(1).size())
ys = torch.cat([ys, next_word.unsqueeze(1)], dim=1)
# print("ys", ys.size())
return ys[:, 1:]
示例4: pose_inv_full
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def pose_inv_full(pose):
'''
param pose: N x 6
Inverse the 2x3 transformer matrix.
'''
N, _ = pose.size()
b = pose.view(N, 2, 3)[:, :, 2:]
# A^{-1}
# Calculate determinant
determinant = (pose[:, 0] * pose[:, 4] - pose[:, 1] * pose[:, 3] + 1e-8).view(N, 1)
indices = Variable(torch.LongTensor([4, 1, 3, 0]).cuda())
scale = Variable(torch.Tensor([1, -1, -1, 1]).cuda())
A_inv = torch.index_select(pose, 1, indices) * scale / determinant
A_inv = A_inv.view(N, 2, 2)
# b' = - A^{-1} b
b_inv = - A_inv.matmul(b).view(N, 2, 1)
transformer_inv = torch.cat([A_inv, b_inv], dim=2)
return transformer_inv
示例5: sample_content
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def sample_content(self, content, sample):
'''
Pass into content_lstm to get a final content.
'''
content = content.view(-1, self.n_frames_input, self.total_components, self.content_latent_size)
contents = []
for i in range(self.total_components):
z = content[:, :, i, :]
z = self.content_lstm(z).unsqueeze(1) # batch_size x 1 x (content_latent_size * 2)
contents.append(z)
content = torch.cat(contents, dim=1).view(-1, self.content_latent_size * 2)
# Get mu and sigma, and sample.
content_mu = content[:, :self.content_latent_size]
content_sigma = F.softplus(content[:, self.content_latent_size:])
content = self.pyro_sample('content', dist.Normal, content_mu, content_sigma, sample)
return content
示例6: test
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
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
示例7: hier_topk
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def hier_topk(cls_scores, icls_scores, vocab, topk):
batch_size = len(cls_scores)
cls_scores = F.log_softmax(cls_scores, dim=-1)
cls_scores_topk, cls_topk = cls_scores.topk(topk, dim=-1)
final_topk = []
for i in range(topk):
clab = cls_topk[:, i]
mask = vocab.get_mask(clab)
masked_icls_scores = F.log_softmax(icls_scores + mask, dim=-1)
icls_scores_topk, icls_topk = masked_icls_scores.topk(topk, dim=-1)
topk_scores = cls_scores_topk[:, i].unsqueeze(-1) + icls_scores_topk
final_topk.append( (topk_scores, clab.unsqueeze(-1).expand(-1, topk), icls_topk) )
topk_scores, cls_topk, icls_topk = zip(*final_topk)
topk_scores = torch.cat(topk_scores, dim=-1)
cls_topk = torch.cat(cls_topk, dim=-1)
icls_topk = torch.cat(icls_topk, dim=-1)
topk_scores, topk_index = topk_scores.topk(topk, dim=-1)
batch_index = cls_topk.new_tensor([[i] * topk for i in range(batch_size)])
cls_topk = cls_topk[batch_index, topk_index]
icls_topk = icls_topk[batch_index, topk_index]
return topk_scores, cls_topk.tolist(), icls_topk.tolist()
示例8: forward
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def forward(self, x_graphs, x_tensors, y_graphs, y_tensors, y_orders, beta):
x_tensors = make_cuda(x_tensors)
y_tensors = make_cuda(y_tensors)
x_root_vecs, x_tree_vecs, x_graph_vecs = self.encode(x_tensors)
_, y_tree_vecs, y_graph_vecs = self.encode(y_tensors)
diff_tree_vecs = y_tree_vecs.sum(dim=1) - x_tree_vecs.sum(dim=1)
diff_graph_vecs = y_graph_vecs.sum(dim=1) - x_graph_vecs.sum(dim=1)
diff_tree_vecs, tree_kl = self.rsample(diff_tree_vecs, self.T_mean, self.T_var)
diff_graph_vecs, graph_kl = self.rsample(diff_graph_vecs, self.G_mean, self.G_var)
kl_div = tree_kl + graph_kl
diff_tree_vecs = diff_tree_vecs.unsqueeze(1).expand(-1, x_tree_vecs.size(1), -1)
diff_graph_vecs = diff_graph_vecs.unsqueeze(1).expand(-1, x_graph_vecs.size(1), -1)
x_tree_vecs = self.W_tree( torch.cat([x_tree_vecs, diff_tree_vecs], dim=-1) )
x_graph_vecs = self.W_graph( torch.cat([x_graph_vecs, diff_graph_vecs], dim=-1) )
loss, wacc, iacc, tacc, sacc = self.decoder((x_root_vecs, x_tree_vecs, x_graph_vecs), y_graphs, y_tensors, y_orders)
return loss + beta * kl_div, kl_div.item(), wacc, iacc, tacc, sacc
示例9: translate
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def translate(self, tensors, cond, num_decode, enum_root):
assert enum_root
tensors = make_cuda(tensors)
root_vecs, tree_vecs, graph_vecs = self.encode(tensors)
cond = cond.view(1,1,-1)
tree_cond = cond.expand(num_decode, tree_vecs.size(1), -1)
graph_cond = cond.expand(num_decode, graph_vecs.size(1), -1)
if enum_root:
repeat = num_decode // len(root_vecs)
modulo = num_decode % len(root_vecs)
root_vecs = torch.cat([root_vecs] * repeat + [root_vecs[:modulo]], dim=0)
tree_vecs = torch.cat([tree_vecs] * repeat + [tree_vecs[:modulo]], dim=0)
graph_vecs = torch.cat([graph_vecs] * repeat + [graph_vecs[:modulo]], dim=0)
z_tree = torch.randn(num_decode, 1, self.latent_size).expand(-1, tree_vecs.size(1), -1).cuda()
z_graph = torch.randn(num_decode, 1, self.latent_size).expand(-1, graph_vecs.size(1), -1).cuda()
z_tree_vecs = self.W_tree( torch.cat([tree_vecs, z_tree, tree_cond], dim=-1) )
z_graph_vecs = self.W_graph( torch.cat([graph_vecs, z_graph, graph_cond], dim=-1) )
return self.decoder.decode( (root_vecs, z_tree_vecs, z_graph_vecs) )
示例10: init_decoder_state
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def init_decoder_state(self, tree_batch, tree_tensors, src_root_vecs):
batch_size = len(src_root_vecs)
num_mess = len(tree_tensors[1])
agraph = tree_tensors[2].clone()
bgraph = tree_tensors[3].clone()
for i,tup in enumerate(tree_tensors[-1]):
root = tup[0]
assert agraph[root,-1].item() == 0
agraph[root,-1] = num_mess + i
for v in tree_batch.successors(root):
mess_idx = tree_batch[root][v]['mess_idx']
assert bgraph[mess_idx,-1].item() == 0
bgraph[mess_idx,-1] = num_mess + i
new_tree_tensors = tree_tensors[:2] + [agraph, bgraph] + tree_tensors[4:]
htree = HTuple()
htree.mess = self.rnn_cell.get_init_state(tree_tensors[1], src_root_vecs)
htree.emask = torch.cat( [bgraph.new_zeros(num_mess), bgraph.new_ones(batch_size)], dim=0 )
return htree, new_tree_tensors
示例11: embed_sub_tree
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def embed_sub_tree(self, tree_tensors, hinput, subtree, is_inter_layer):
subnode, submess = subtree
num_nodes = tree_tensors[0].size(0)
fnode, fmess, agraph, bgraph, cgraph, _ = self.get_sub_tensor(tree_tensors, subtree)
if is_inter_layer:
finput = self.E_i(fnode[:, 1])
hinput = index_select_ND(hinput, 0, cgraph).sum(dim=1)
hnode = self.W_i( torch.cat([finput, hinput], dim=-1) )
else:
finput = self.E_c(fnode[:, 0])
hinput = hinput.index_select(0, subnode)
hnode = self.W_c( torch.cat([finput, hinput], dim=-1) )
if len(submess) == 0:
hmess = fmess
else:
node_buf = torch.zeros(num_nodes, self.hidden_size, device=fmess.device)
node_buf = index_scatter(hnode, node_buf, subnode)
hmess = node_buf.index_select(index=fmess[:, 0], dim=0)
pos_vecs = self.E_pos.index_select(0, fmess[:, 2])
hmess = torch.cat( [hmess, pos_vecs], dim=-1 )
return hnode, hmess, agraph, bgraph
示例12: translate
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def translate(self, tensors, num_decode, enum_root, greedy=True):
tensors = make_cuda(tensors)
root_vecs, tree_vecs, graph_vecs = self.encode(tensors)
all_smiles = []
if enum_root:
repeat = num_decode // len(root_vecs)
modulo = num_decode % len(root_vecs)
root_vecs = torch.cat([root_vecs] * repeat + [root_vecs[:modulo]], dim=0)
tree_vecs = torch.cat([tree_vecs] * repeat + [tree_vecs[:modulo]], dim=0)
graph_vecs = torch.cat([graph_vecs] * repeat + [graph_vecs[:modulo]], dim=0)
batch_size = len(root_vecs)
z_tree = torch.randn(batch_size, 1, self.latent_size).expand(-1, tree_vecs.size(1), -1).cuda()
z_graph = torch.randn(batch_size, 1, self.latent_size).expand(-1, graph_vecs.size(1), -1).cuda()
z_tree_vecs = self.W_tree( torch.cat([tree_vecs, z_tree], dim=-1) )
z_graph_vecs = self.W_graph( torch.cat([graph_vecs, z_graph], dim=-1) )
return self.decoder.decode( (root_vecs, z_tree_vecs, z_graph_vecs), greedy=greedy)
示例13: forward
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def forward(self, inputs):
"""Forward function."""
assert len(inputs) == self.num_ins
outs = [inputs[0]]
for i in range(1, self.num_ins):
outs.append(
F.interpolate(inputs[i], scale_factor=2**i, mode='bilinear'))
out = torch.cat(outs, dim=1)
if out.requires_grad and self.with_cp:
out = checkpoint(self.reduction_conv, out)
else:
out = self.reduction_conv(out)
outs = [out]
for i in range(1, self.num_outs):
outs.append(self.pooling(out, kernel_size=2**i, stride=2**i))
outputs = []
for i in range(self.num_outs):
if outs[i].requires_grad and self.with_cp:
tmp_out = checkpoint(self.fpn_convs[i], outs[i])
else:
tmp_out = self.fpn_convs[i](outs[i])
outputs.append(tmp_out)
return tuple(outputs)
示例14: get_targets
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def get_targets(self, gt_bbox_list, gt_label_list, featmap_sizes, points):
label_list, bbox_target_list = multi_apply(
self._get_target_single,
gt_bbox_list,
gt_label_list,
featmap_size_list=featmap_sizes,
point_list=points)
flatten_labels = [
torch.cat([
labels_level_img.flatten() for labels_level_img in labels_level
]) for labels_level in zip(*label_list)
]
flatten_bbox_targets = [
torch.cat([
bbox_targets_level_img.reshape(-1, 4)
for bbox_targets_level_img in bbox_targets_level
]) for bbox_targets_level in zip(*bbox_target_list)
]
flatten_labels = torch.cat(flatten_labels)
flatten_bbox_targets = torch.cat(flatten_bbox_targets)
return flatten_labels, flatten_bbox_targets
示例15: centers_to_bboxes
# 需要導入模塊: import torch [as 別名]
# 或者: from torch import cat [as 別名]
def centers_to_bboxes(self, point_list):
"""Get bboxes according to center points.
Only used in :class:`MaxIoUAssigner`.
"""
bbox_list = []
for i_img, point in enumerate(point_list):
bbox = []
for i_lvl in range(len(self.point_strides)):
scale = self.point_base_scale * self.point_strides[i_lvl] * 0.5
bbox_shift = torch.Tensor([-scale, -scale, scale,
scale]).view(1, 4).type_as(point[0])
bbox_center = torch.cat(
[point[i_lvl][:, :2], point[i_lvl][:, :2]], dim=1)
bbox.append(bbox_center + bbox_shift)
bbox_list.append(bbox)
return bbox_list