本文整理汇总了Python中torch.stack函数的典型用法代码示例。如果您正苦于以下问题:Python stack函数的具体用法?Python stack怎么用?Python stack使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了stack函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: _get_single_item
def _get_single_item(self, index):
start_ind, end_ind, pid, label, camid = self.seqset[index]
imgseq = []
flowseq = []
for ind in range(start_ind, end_ind):
fname = self.identities[pid][camid][ind]
fpath_img = osp.join(self.root[0], fname)
imgrgb = Image.open(fpath_img).convert('RGB')
fpath_flow = osp.join(self.root[1], fname)
flowrgb = Image.open(fpath_flow).convert('RGB')
imgseq.append(imgrgb)
flowseq.append(flowrgb)
while len(imgseq) < self.seq_len:
imgseq.append(imgrgb)
flowseq.append(flowrgb)
seq = [imgseq, flowseq]
if self.transform is not None:
seq = self.transform(seq)
img_tensor = torch.stack(seq[0], 0)
if len(self.root) == 2:
flow_tensor = torch.stack(seq[1], 0)
else:
flow_tensor = None
return img_tensor, flow_tensor, pid, camid
开发者ID:AsuradaYuci,项目名称:video_reid,代码行数:32,代码来源:seqpreprocessor.py
示例2: lk_forward_backward_batch
def lk_forward_backward_batch(features, locations, window, steps):
sequence, C, H, W = list(features.size())
seq, num_pts, _ = list(locations.size())
assert seq == sequence, '{:} vs {:}'.format(features.size(), locations.size())
previous_pts = [ locations[0] ]
for iseq in range(1, sequence):
feature_old = features.narrow(0, iseq-1, 1)
feature_new = features.narrow(0, iseq , 1)
nextPts = lk_tensor_track_batch(feature_old, feature_new, previous_pts[iseq-1], window, steps, None)
previous_pts.append(nextPts)
fback_pts = [None] * (sequence-1) + [ previous_pts[-1] ]
for iseq in range(sequence-2, -1, -1):
feature_old = features.narrow(0, iseq+1, 1)
feature_new = features.narrow(0, iseq , 1)
backPts = lk_tensor_track_batch(feature_old, feature_new, fback_pts[iseq+1] , window, steps, None)
fback_pts[iseq] = backPts
back_pts = [None] * (sequence-1) + [ locations[-1] ]
for iseq in range(sequence-2, -1, -1):
feature_old = features.narrow(0, iseq+1, 1)
feature_new = features.narrow(0, iseq , 1)
backPts = lk_tensor_track_batch(feature_old, feature_new, back_pts[iseq+1] , window, steps, None)
back_pts[iseq] = backPts
return torch.stack(previous_pts), torch.stack(fback_pts), torch.stack(back_pts)
开发者ID:Zumbalamambo,项目名称:supervision-by-registration,代码行数:27,代码来源:basic_lk_batch.py
示例3: forward
def forward(self, hidden, encoder_outputs, attn_mask):
# Create variable to store attention energies
# hidden is 16 by 512
# encoder_outputs is 16 by 72 by 512
# this just uses the top layer of the 2-layer decoder.
# okay?
hidden = hidden.squeeze(0)
batch_size = hidden.size()[0]
attn_energies = []
for i in range(batch_size):
attn_energies.append(self.score(hidden[i], encoder_outputs[i]))
attn_energies = torch.stack(attn_energies).squeeze(0)
# attn_energies is 32 by 72
if attn_mask is not None:
attn_energies = attn_mask * attn_energies
attn_energies[attn_energies == 0] = -1e10
# i want to mask the attention energies
if attn_mask is None:
attn_energies = attn_energies.view(1, -1)
attn_energies = self.softmax(attn_energies)
context_vectors = []
for i in range(batch_size):
context_vectors.append(torch.matmul(attn_energies[i], encoder_outputs[i]))
context_vectors = torch.stack(context_vectors)
return context_vectors
开发者ID:vwrj,项目名称:neural_machine_translation,代码行数:31,代码来源:Attention-Vish.py
示例4: process_batch_for_length
def process_batch_for_length(self, sequences, c_sequences):
"""
Assemble and pad data.
"""
assert len(sequences) == len(c_sequences)
lengths = Variable(self.tensor_type([len(seq) for seq in sequences]))
max_length = max(len(seq) for seq in sequences)
max_c_length = max(max(len(chars) for chars in seq)
for seq in c_sequences)
def _padded(seq, max_length):
_padded_seq = self.tensor_type(max_length).zero_()
_padded_seq[:len(seq)] = self.tensor_type(seq)
return _padded_seq
sequences = Variable(torch.stack(
[_padded(seq, max_length) for seq in sequences]))
def _padded_char(seq, max_length, max_c_length):
_padded = self.tensor_type(max_length, max_c_length).zero_()
for ind, tok in enumerate(seq):
_padded[ind, :len(tok)] = self.tensor_type(tok)
return _padded
c_sequences = Variable(torch.stack([
_padded_char(seq, max_length, max_c_length)
for seq in c_sequences]))
return (sequences, c_sequences, lengths)
开发者ID:zhouyonglong,项目名称:MSMARCOV2,代码行数:28,代码来源:dataset.py
示例5: singleTagLoss
def singleTagLoss(pred_tag, keypoints):
"""
associative embedding loss for one image
"""
eps = 1e-6
tags = []
pull = 0
for i in keypoints:
tmp = []
for j in i:
if j[1]>0:
tmp.append(pred_tag[j[0]])
if len(tmp) == 0:
continue
tmp = torch.stack(tmp)
tags.append(torch.mean(tmp, dim=0))
pull = pull + torch.mean((tmp - tags[-1].expand_as(tmp))**2)
if len(tags) == 0:
return make_input(torch.zeros([1]).float()), make_input(torch.zeros([1]).float())
tags = torch.stack(tags)[:,0]
num = tags.size()[0]
size = (num, num, tags.size()[1])
A = tags.unsqueeze(dim=1).expand(*size)
B = A.permute(1, 0, 2)
diff = A - B
diff = torch.pow(diff, 2).sum(dim=2)[:,:,0]
push = torch.exp(-diff)
push = (torch.sum(push) - num)
return push/((num - 1) * num + eps) * 0.5, pull/(num + eps)
开发者ID:cuizy15,项目名称:pose-ae-train,代码行数:33,代码来源:loss.py
示例6: adpW
def adpW(self,x):
'''
calculate the pairwise_att of everypair of inputs
output_size: (x.size(0),x.size(1)/2)
'''
x = x.detach()
x = self.adp_metric_embedding1(x)
x = self.adp_metric_embedding1_bn(x)
x = F.relu(x)
x = self.adp_metric_embedding2(x)
x = self.adp_metric_embedding2_bn(x)
x = F.relu(x)
x = self.adp_metric_embedding3(x)
x = self.adp_metric_embedding3_bn(x)
x = F.relu(x)
pairwise_att = F.sigmoid(self.adp_metric_embedding4(x))
# x = self.adp_metric_embedding2_bn(x)
diag_matrix1 = []
diag_matrix2 = []
for i in range(x.size(0)):
diag_matrix1.append(torch.diag(pairwise_att[i, :x.size(1)/2]))
for i in range(x.size(0)):
diag_matrix2.append(torch.diag(pairwise_att[i, x.size(1)/2:]))
pairwise_att1 = torch.stack(diag_matrix1)
pairwise_att2 = torch.stack(diag_matrix1)
return pairwise_att1, pairwise_att2
开发者ID:hh23333,项目名称:FVAE_adversarial,代码行数:26,代码来源:adaptive_triplet.py
示例7: predict
def predict(self, x, attn_type = "hard"):
#predict with greedy decoding
emb = self.embedding(x)
h = Variable(torch.zeros(1, x.size(0), self.hidden_dim))
c = Variable(torch.zeros(1, x.size(0), self.hidden_dim))
enc_h, _ = self.encoder(emb, (h, c))
y = [Variable(torch.zeros(x.size(0)).long())]
self.attn = []
for t in range(x.size(1)):
emb_t = self.embedding(y[-1])
dec_h, (h, c) = self.decoder(emb_t.unsqueeze(1), (h, c))
scores = torch.bmm(enc_h, dec_h.transpose(1,2)).squeeze(2)
attn_dist = F.softmax(scores, dim = 1)
self.attn.append(attn_dist.data)
if attn_type == "hard":
_, argmax = attn_dist.max(1)
one_hot = Variable(torch.zeros_like(attn_dist.data).scatter_(-1, argmax.data.unsqueeze(1), 1))
context = torch.bmm(one_hot.unsqueeze(1), enc_h).squeeze(1)
else:
context = torch.bmm(attn_dist.unsqueeze(1), enc_h).squeeze(1)
pred = self.vocab_layer(torch.cat([dec_h.squeeze(1), context], 1))
_, next_token = pred.max(1)
y.append(next_token)
self.attn = torch.stack(self.attn, 0).transpose(0, 1)
return torch.stack(y, 0).transpose(0, 1)
开发者ID:anihamde,项目名称:cs287-s18,代码行数:25,代码来源:section4-Copy1.py
示例8: __getitem__
def __getitem__(self, index):
if self.mode == 'test':
img_path, img_name = self.imgs[index]
img = Image.open(os.path.join(img_path, img_name + '.jpg')).convert('RGB')
if self.transform is not None:
img = self.transform(img)
return img_name, img
img_path, mask_path = self.imgs[index]
img = Image.open(img_path).convert('RGB')
if self.mode == 'train':
mask = sio.loadmat(mask_path)['GTcls']['Segmentation'][0][0]
mask = Image.fromarray(mask.astype(np.uint8))
else:
mask = Image.open(mask_path)
if self.joint_transform is not None:
img, mask = self.joint_transform(img, mask)
if self.sliding_crop is not None:
img_slices, mask_slices, slices_info = self.sliding_crop(img, mask)
if self.transform is not None:
img_slices = [self.transform(e) for e in img_slices]
if self.target_transform is not None:
mask_slices = [self.target_transform(e) for e in mask_slices]
img, mask = torch.stack(img_slices, 0), torch.stack(mask_slices, 0)
return img, mask, torch.LongTensor(slices_info)
else:
if self.transform is not None:
img = self.transform(img)
if self.target_transform is not None:
mask = self.target_transform(mask)
return img, mask
开发者ID:codes-kzhan,项目名称:pytorch-semantic-segmentation,代码行数:33,代码来源:voc.py
示例9: predict
def predict(self, x_de, x_en):
bs = x_de.size(0)
emb_de = self.embedding_de(x_de) # bs,n_de,word_dim
emb_en = self.embedding_en(x_en) # bs,n_en,word_dim
h = Variable(torch.zeros(self.n_layers*self.directions, bs, self.hidden_dim).cuda())
c = Variable(torch.zeros(self.n_layers*self.directions, bs, self.hidden_dim).cuda())
enc_h, _ = self.encoder(emb_de, (h, c))
dec_h, _ = self.decoder(emb_en, (h, c))
# all the same. enc_h is bs,n_de,hiddensz*n_directions. h and c are both n_layers*n_directions,bs,hiddensz
if self.directions == 2:
enc_h = self.dim_reduce(enc_h) # bs,n_de,hiddensz
scores = torch.bmm(enc_h, dec_h.transpose(1,2))
# (bs,n_de,hiddensz) * (bs,hiddensz,n_en) = (bs,n_de,n_en)
y = [Variable(torch.cuda.LongTensor([sos_token]*bs))] # bs
self.attn = []
for t in range(x_en.size(1)-1): # iterate over english words, with teacher forcing
attn_dist = F.softmax(scores[:,:,t],dim=1) # bs,n_de
self.attn.append(attn_dist.data)
if self.attn_type == "hard":
_, argmax = attn_dist.max(1) # bs. for each batch, select most likely german word to pay attention to
one_hot = Variable(torch.zeros_like(attn_dist.data).scatter_(-1, argmax.data.unsqueeze(1), 1).cuda())
context = torch.bmm(one_hot.unsqueeze(1), enc_h).squeeze(1)
else:
context = torch.bmm(attn_dist.unsqueeze(1), enc_h).squeeze(1)
# the difference btwn hard and soft is just whether we use a one_hot or a distribution
# context is bs,hiddensz
pred = self.vocab_layer(torch.cat([dec_h[:,t,:], context], 1)) # bs,len(EN.vocab)
_, next_token = pred.max(1) # bs
y.append(next_token)
self.attn = torch.stack(self.attn, 0).transpose(0, 1) # bs,n_en,n_de (for visualization!)
y = torch.stack(y,0).transpose(0,1) # bs,n_en
return y,self.attn
开发者ID:anihamde,项目名称:cs287-s18,代码行数:32,代码来源:models_original.py
示例10: forward
def forward(self, z_seq, a_seq, term_seq):
# x: [B,2,84,84]
# T = x.size()[0]
h = torch.zeros(1,self.h_size).cuda()
z_losses = []
term_losses = []
for t in range(len(term_seq)-1):
inter = self.encode_az(a_seq[t], z_seq[t])
h = self.update_h(h, inter)
z_pred, term_pred = self.predict_output(h, inter)
z_loss = torch.mean((z_seq[t+1] - z_pred)**2)
term_loss = F.binary_cross_entropy_with_logits(input=term_pred, target=term_seq[t+1])
z_losses.append(z_loss)
term_losses.append(term_loss)
z_loss = torch.mean(torch.stack(z_losses))
term_loss = torch.mean(torch.stack(term_losses))
loss = z_loss + term_loss
return loss, z_loss, term_loss
开发者ID:chriscremer,项目名称:Other_Code,代码行数:25,代码来源:train_rnn.py
示例11: __getitem__
def __getitem__(self, index):
img_path, mask_path = self.imgs[index]
img, mask = Image.open(img_path).convert('RGB'), Image.open(mask_path)
mask = np.array(mask)
mask_copy = mask.copy()
for k, v in self.id_to_trainid.items():
mask_copy[mask == k] = v
mask = Image.fromarray(mask_copy.astype(np.uint8))
if self.joint_transform is not None:
img, mask = self.joint_transform(img, mask)
if self.sliding_crop is not None:
img_slices, mask_slices, slices_info = self.sliding_crop(img, mask)
if self.transform is not None:
img_slices = [self.transform(e) for e in img_slices]
if self.target_transform is not None:
mask_slices = [self.target_transform(e) for e in mask_slices]
img, mask = torch.stack(img_slices, 0), torch.stack(mask_slices, 0)
return img, mask, torch.LongTensor(slices_info)
else:
if self.transform is not None:
img = self.transform(img)
if self.target_transform is not None:
mask = self.target_transform(mask)
return img, mask
开发者ID:codes-kzhan,项目名称:pytorch-semantic-segmentation,代码行数:26,代码来源:cityscapes.py
示例12: setUp
def setUp(self, size=(2, 5), batch=3, dtype=torch.float64, device=None,
seed=None, mu=None, cov=None, A=None, b=None):
'''Test the correctness of batch implementation of mean().
This function will stack `[1 * mu, 2 * mu, ..., batch * mu]`.
Then, it will see whether the batch output is accurate or not.
Args:
size: Tuple size of matrix A.
batch: The batch size > 0.
dtype: data type.
device: In which device.
seed: Seed for the random number generator.
mu: To test a specific mean mu.
cov: To test a specific covariance matrix.
A: To test a specific A matrix.
b: To test a specific bias b.
'''
if seed is not None:
torch.manual_seed(seed)
if A is None:
A = torch.rand(size, dtype=dtype, device=device)
if b is None:
b = torch.rand(size[0], dtype=dtype, device=device)
if mu is None:
mu = torch.rand(size[1], dtype=dtype, device=device)
if cov is None:
cov = rand.definite(size[1], dtype=dtype, device=device,
positive=True, semi=False, norm=10**2)
self.A = A
self.b = b
var = torch.diag(cov)
self.batch_mean = torch.stack([(i + 1) * mu for i in range(batch)])
self.batch_cov = torch.stack([(i + 1) * cov for i in range(batch)])
self.batch_var = torch.stack([(i + 1) * var for i in range(batch)])
开发者ID:ModarTensai,项目名称:network_moments,代码行数:35,代码来源:tests.py
示例13: default_collate
def default_collate(batch):
"Puts each data field into a tensor with outer dimension batch size"
if torch.is_tensor(batch[0]):
out = None
if _use_shared_memory:
# If we're in a background process, concatenate directly into a
# shared memory tensor to avoid an extra copy
numel = sum([x.numel() for x in batch])
storage = batch[0].storage()._new_shared(numel)
out = batch[0].new(storage)
return torch.stack(batch, 0, out=out)
elif type(batch[0]).__module__ == 'numpy':
elem = batch[0]
if type(elem).__name__ == 'ndarray':
return torch.stack([torch.from_numpy(b) for b in batch], 0)
if elem.shape == (): # scalars
py_type = float if elem.dtype.name.startswith('float') else int
return numpy_type_map[elem.dtype.name](list(map(py_type, batch)))
elif isinstance(batch[0], int):
return torch.LongTensor(batch)
elif isinstance(batch[0], float):
return torch.DoubleTensor(batch)
elif isinstance(batch[0], string_classes):
return batch
elif isinstance(batch[0], collections.Mapping):
return {key: default_collate([d[key] for d in batch]) for key in batch[0]}
elif isinstance(batch[0], collections.Sequence):
transposed = zip(*batch)
return [default_collate(samples) for samples in transposed]
raise TypeError(("batch must contain tensors, numbers, dicts or lists; found {}"
.format(type(batch[0]))))
开发者ID:zgsxwsdxg,项目名称:mxbox,代码行数:32,代码来源:torchloader.py
示例14: plot_rec
def plot_rec(x, netEC, netEP, netD):
x_c = x[0]
x_p = x[np.random.randint(1, opt.max_step)]
h_c = netEC(x_c)
h_p = netEP(x_p)
# print('h_c shape: ', h_c.shape)
# print('h p shape: ', h_p.shape)
rec = netD([h_c, h_p])
x_c, x_p, rec = x_c.data, x_p.data, rec.data
fname = '%s/rec/rec_test.png' % (opt.log_dir)
comparison = None
for i in range(len(x_c)):
if comparison is None:
comparison = torch.stack([x_c[i], x_p[i], rec[i]])
else:
new_comparison = torch.stack([x_c[i], x_p[i], rec[i]])
comparison = torch.cat([comparison, new_comparison])
print('comparison: ', comparison.shape)
# row_sz = 5
# nplot = 20
# for i in range(0, nplot - row_sz, row_sz):
# row = [[xc, xp, xr] for xc, xp, xr in zip(x_c[i:i + row_sz], x_p[i:i + row_sz], rec[i:i + row_sz])]
# print('row: ', row)
# to_plot.append(list(itertools.chain(*row)))
# print(len(to_plot[0]))
# utils.save_tensors_image(fname, comparison)
if not os.path.exists(os.path.dirname(fname)):
os.makedirs(os.path.dirname(fname))
save_image(comparison.cpu(), fname, nrow=3)
开发者ID:ZhenyueQin,项目名称:drnet-py,代码行数:34,代码来源:drnet_test_field.py
示例15: forward
def forward(self, input_):
#init hidden state with xavier
vert_state = torch.zeros(input_[0].size(1), self.vert_state_dim).cuda()
edge_state = torch.zeros(input_[1].size(1), self.edge_state_dim).cuda()
'''if self.gpu_mode >= 0:
vert_state = torch.tensor(vert_state.cuda())
edge_state = torch.tensor(edge_state.cuda())'''
batch_size = input_[0].size(0)
vert_input = input_[0]
edge_input = input_[1]
#print('vert and edge input', vert_input.size(), edge_input.size())
vert_state_list = []
edge_state_list = []
#todo: can this be parallelized?
for i in range(batch_size):
torch.nn.init.xavier_uniform(vert_state)
torch.nn.init.xavier_uniform(edge_state)
vert_state = self.vert_gru(vert_input[i], vert_state)
edge_state = self.edge_gru(edge_input[i], edge_state)
#todo: check whether this way is correct, TF code uses a separate global var to keep hidden state
for i in range(self.num_steps):
edge_context = self.get_edge_context(edge_state, vert_state)
vert_context = self.get_vert_context(vert_state, edge_state)
edge_state = self.edge_gru(edge_context, edge_state)
vert_state = self.vert_gru(vert_context, vert_state)
vert_state_list.append(vert_state)
edge_state_list.append(edge_state)
return torch.stack(vert_state_list), torch.stack(edge_state_list)
开发者ID:thilinicooray,项目名称:my_imsitu,代码行数:35,代码来源:action_graph.py
示例16: rollouts_batch
def rollouts_batch(self, batch):
batch_size = batch.size()[0]
batch_rest = batch.size()[1:]
if batch_size == 1:
obs_batch_v = batch.expand(batch_size * self.n_actions, *batch_rest)
else:
obs_batch_v = batch.unsqueeze(1)
obs_batch_v = obs_batch_v.expand(batch_size, self.n_actions, *batch_rest)
obs_batch_v = obs_batch_v.contiguous().view(-1, *batch_rest)
actions = np.tile(np.arange(0, self.n_actions, dtype=np.int64), batch_size)
step_obs, step_rewards = [], []
for step_idx in range(self.rollout_steps):
actions_t = torch.tensor(actions).to(batch.device)
obs_next_v, reward_v = self.net_em(obs_batch_v, actions_t)
step_obs.append(obs_next_v.detach())
step_rewards.append(reward_v.detach())
# don't need actions for the last step
if step_idx == self.rollout_steps-1:
break
# combine the delta from EM into new observation
cur_plane_v = obs_batch_v[:, 1:2]
new_plane_v = cur_plane_v + obs_next_v
obs_batch_v = torch.cat((cur_plane_v, new_plane_v), dim=1)
# select actions
logits_v, _ = self.net_policy(obs_batch_v)
probs_v = F.softmax(logits_v, dim=1)
probs = probs_v.data.cpu().numpy()
actions = self.action_selector(probs)
step_obs_v = torch.stack(step_obs)
step_rewards_v = torch.stack(step_rewards)
flat_enc_v = self.encoder(step_obs_v, step_rewards_v)
return flat_enc_v.view(batch_size, -1)
开发者ID:dhaopku,项目名称:Deep-Reinforcement-Learning-Hands-On,代码行数:33,代码来源:i2a.py
示例17: encode
def encode(self, article, art_lens=None):
size = (
self._init_enc_h.size(0),
len(art_lens) if art_lens else 1,
self._init_enc_h.size(1)
)
init_enc_states = (
self._init_enc_h.unsqueeze(1).expand(*size),
self._init_enc_c.unsqueeze(1).expand(*size)
)
enc_art, final_states = lstm_encoder(
article, self._enc_lstm, art_lens,
init_enc_states, self._embedding
)
if self._enc_lstm.bidirectional:
h, c = final_states
final_states = (
torch.cat(h.chunk(2, dim=0), dim=2),
torch.cat(c.chunk(2, dim=0), dim=2)
)
init_h = torch.stack([self._dec_h(s)
for s in final_states[0]], dim=0)
init_c = torch.stack([self._dec_c(s)
for s in final_states[1]], dim=0)
init_dec_states = (init_h, init_c)
attention = torch.matmul(enc_art, self._attn_wm).transpose(0, 1)
init_attn_out = self._projection(torch.cat(
[init_h[-1], sequence_mean(attention, art_lens, dim=1)], dim=1
))
return attention, (init_dec_states, init_attn_out)
开发者ID:ShawnXiha,项目名称:fast_abs_rl,代码行数:30,代码来源:summ.py
示例18: collate_fn
def collate_fn(self, batch):
'''Pad images and encode targets.
As for images are of different sizes, we need to pad them to the same size.
Args:
batch: (list) of images, cls_targets, loc_targets.
Returns:
padded images, stacked cls_targets, stacked loc_targets.
'''
imgs = [x[0] for x in batch]
boxes = [x[1] for x in batch]
labels = [x[2] for x in batch]
h = w = self.input_size
num_imgs = len(imgs)
inputs = torch.zeros(num_imgs, 3, h, w)
loc_targets = []
cls_targets = []
for i in range(num_imgs):
inputs[i] = imgs[i]
loc_target, cls_target = self.encoder.encode(boxes[i], labels[i], input_size=(w,h))
loc_targets.append(loc_target)
cls_targets.append(cls_target)
return inputs, torch.stack(loc_targets), torch.stack(cls_targets)
开发者ID:hopstone,项目名称:pytorch-retinanet,代码行数:27,代码来源:datagen.py
示例19: _construct_previous
def _construct_previous(self, layer, direction, inputs, tree, idx):
if direction == 'up':
oidx = tree.children_idx(idx)
else:
oidx = tree.parents_idx(idx)
if oidx:
h_prev, c_prev = [], []
for i in oidx:
h_prev_i, c_prev_i = self._upward_downward(layer,
direction,
inputs,
tree, i)
h_prev.append(h_prev_i)
c_prev.append(c_prev_i)
h_prev = torch.stack(h_prev, 1)
c_prev = torch.stack(c_prev, 1)
elif inputs.is_cuda:
h_prev = torch.zeros(self.hidden_size, 1).cuda()
c_prev = torch.zeros(self.hidden_size, 1).cuda()
else:
h_prev = torch.zeros(self.hidden_size, 1)
c_prev = torch.zeros(self.hidden_size, 1)
return oidx, (h_prev, c_prev)
开发者ID:ShaorongYan,项目名称:factslab-python,代码行数:30,代码来源:childsumtreelstm.py
示例20: random_sample
def random_sample(batch):
imgids, sentids, imgfeats, textfeats = batch
### image as anchor
anchor_img, positive_text, negative_text = [],[],[]
for i,iid in enumerate(imgids):
for j,iid2 in enumerate(imgids):
if iid!=iid2:
anchor_img.append(imgfeats[i])
positive_text.append(textfeats[i])
negative_text.append(textfeats[j])
anchor_img, positive_text, negative_text = torch.stack(anchor_img), torch.stack(positive_text), torch.stack(negative_text)
### text as anchof
anchor_text, positive_img, negative_img = [],[],[]
for i,iid in enumerate(imgids):
for j,iid2 in enumerate(imgids):
if iid!=iid2:
anchor_text.append(textfeats[i])
positive_img.append(imgfeats[i])
negative_img.append(imgfeats[j])
anchor_text, positive_img, negative_img = torch.stack(anchor_text), torch.stack(positive_img), torch.stack(negative_img)
positive_text = positive_text.type(torch.FloatTensor)
negative_text = negative_text.type(torch.FloatTensor)
return anchor_img, positive_text, negative_text, anchor_text, positive_img, negative_img
开发者ID:tyhu,项目名称:PyAI,代码行数:26,代码来源:train.py
注:本文中的torch.stack函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论