Python torch.unsqueeze() Examples
The following are 30
code examples of torch.unsqueeze().
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 File: losses.py From EfficientDet.Pytorch with MIT License | 6 votes |
def calc_iou(a, b): area = (b[:, 2] - b[:, 0]) * (b[:, 3] - b[:, 1]) iw = torch.min(torch.unsqueeze( a[:, 2], dim=1), b[:, 2]) - torch.max(torch.unsqueeze(a[:, 0], 1), b[:, 0]) ih = torch.min(torch.unsqueeze( a[:, 3], dim=1), b[:, 3]) - torch.max(torch.unsqueeze(a[:, 1], 1), b[:, 1]) iw = torch.clamp(iw, min=0) ih = torch.clamp(ih, min=0) ua = torch.unsqueeze((a[:, 2] - a[:, 0]) * (a[:, 3] - a[:, 1]), dim=1) + area - iw * ih ua = torch.clamp(ua, min=1e-8) intersection = iw * ih IoU = intersection / ua return IoU
Example #2
Source File: pointwise.py From pykg2vec with MIT License | 6 votes |
def forward(self, h, r, t): h_emb, r_emb, t_emb = self.embed(h, r, t) first_dimen = list(h_emb.shape)[0] stacked_h = torch.unsqueeze(h_emb, dim=1) stacked_r = torch.unsqueeze(r_emb, dim=1) stacked_t = torch.unsqueeze(t_emb, dim=1) stacked_hrt = torch.cat([stacked_h, stacked_r, stacked_t], dim=1) stacked_hrt = torch.unsqueeze(stacked_hrt, dim=1) # [b, 1, 3, k] stacked_hrt = [conv_layer(stacked_hrt) for conv_layer in self.conv_list] stacked_hrt = torch.cat(stacked_hrt, dim=3) stacked_hrt = stacked_hrt.view(first_dimen, -1) preds = self.fc1(stacked_hrt) preds = torch.squeeze(preds, dim=-1) return preds
Example #3
Source File: Patient2Vec.py From Patient2Vec with MIT License | 6 votes |
def convolutional_layer(self, inputs): convolution_all = [] conv_wts = [] for i in range(self.seq_len): convolution_one_month = [] for j in range(self.pad_size): convolution = self.conv(torch.unsqueeze(inputs[:, i, j], dim=1)) convolution_one_month.append(convolution) convolution_one_month = torch.stack(convolution_one_month) convolution_one_month = torch.squeeze(convolution_one_month, dim=3) convolution_one_month = torch.transpose(convolution_one_month, 0, 1) convolution_one_month = torch.transpose(convolution_one_month, 1, 2) convolution_one_month = torch.squeeze(convolution_one_month, dim=1) convolution_one_month = self.func_tanh(convolution_one_month) convolution_one_month = torch.unsqueeze(convolution_one_month, dim=1) vec = torch.bmm(convolution_one_month, inputs[:, i]) convolution_all.append(vec) conv_wts.append(convolution_one_month) convolution_all = torch.stack(convolution_all, dim=1) convolution_all = torch.squeeze(convolution_all, dim=2) conv_wts = torch.squeeze(torch.stack(conv_wts, dim=1), dim=2) return convolution_all, conv_wts
Example #4
Source File: losses.py From EfficientDet-PyTorch with Apache License 2.0 | 6 votes |
def calc_iou(a, b): area = (b[:, 2] - b[:, 0]) * (b[:, 3] - b[:, 1]) iw = torch.min(torch.unsqueeze(a[:, 2], dim=1), b[:, 2]) - torch.max(torch.unsqueeze(a[:, 0], 1), b[:, 0]) ih = torch.min(torch.unsqueeze(a[:, 3], dim=1), b[:, 3]) - torch.max(torch.unsqueeze(a[:, 1], 1), b[:, 1]) iw = torch.clamp(iw, min=0) ih = torch.clamp(ih, min=0) ua = torch.unsqueeze((a[:, 2] - a[:, 0]) * (a[:, 3] - a[:, 1]), dim=1) + area - iw * ih ua = torch.clamp(ua, min=1e-8) intersection = iw * ih IoU = intersection / ua return IoU
Example #5
Source File: pairwise.py From pykg2vec with MIT License | 6 votes |
def train_layer(self, h, t): """ Defines the forward pass training layers of the algorithm. Args: h (Tensor): Head entities ids. t (Tensor): Tail entity ids of the triple. """ mr1h = torch.matmul(h, self.mr1.weight) # h => [m, self.ent_hidden_size], self.mr1 => [self.ent_hidden_size, self.rel_hidden_size] mr2t = torch.matmul(t, self.mr2.weight) # t => [m, self.ent_hidden_size], self.mr2 => [self.ent_hidden_size, self.rel_hidden_size] expanded_h = h.unsqueeze(dim=0).repeat(self.rel_hidden_size, 1, 1) # [self.rel_hidden_size, m, self.ent_hidden_size] expanded_t = t.unsqueeze(dim=-1) # [m, self.ent_hidden_size, 1] temp = (torch.matmul(expanded_h, self.mr.weight.view(self.rel_hidden_size, self.ent_hidden_size, self.ent_hidden_size))).permute(1, 0, 2) # [m, self.rel_hidden_size, self.ent_hidden_size] htmrt = torch.squeeze(torch.matmul(temp, expanded_t), dim=-1) # [m, self.rel_hidden_size] return F.tanh(htmrt + mr1h + mr2t + self.br.weight)
Example #6
Source File: unguided_network.py From nconv with GNU General Public License v3.0 | 6 votes |
def navg_layer(self, kernel_size, init_stdev=0.5, in_channels=1, out_channels=1, initalizer='x', pos=False, groups=1): navg = nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=1, padding=(kernel_size[0]//2, kernel_size[1]//2), bias=False, groups=groups) weights = navg.weight if initalizer == 'x': # Xavier torch.nn.init.xavier_uniform(weights) elif initalizer == 'k': torch.nn.init.kaiming_uniform(weights) elif initalizer == 'p': mu=kernel_size[0]/2 dist = poisson(mu) x = np.arange(0, kernel_size[0]) y = np.expand_dims(dist.pmf(x),1) w = signal.convolve2d(y, y.transpose(), 'full') w = torch.FloatTensor(w).cuda() w = torch.unsqueeze(w,0) w = torch.unsqueeze(w,1) w = w.repeat(out_channels, 1, 1, 1) w = w.repeat(1, in_channels, 1, 1) weights.data = w + torch.rand(w.shape).cuda() return navg
Example #7
Source File: unguided_network.py From nconv with GNU General Public License v3.0 | 6 votes |
def navg_layer(self, kernel_size, init_stdev=0.5, in_channels=1, out_channels=1, initalizer='x', pos=False, groups=1): navg = nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=1, padding=(kernel_size[0]//2, kernel_size[1]//2), bias=False, groups=groups) weights = navg.weight if initalizer == 'x': # Xavier torch.nn.init.xavier_uniform(weights) elif initalizer == 'k': torch.nn.init.kaiming_uniform(weights) elif initalizer == 'p': mu=kernel_size[0]/2 dist = poisson(mu) x = np.arange(0, kernel_size[0]) y = np.expand_dims(dist.pmf(x),1) w = signal.convolve2d(y, y.transpose(), 'full') w = torch.FloatTensor(w).cuda() w = torch.unsqueeze(w,0) w = torch.unsqueeze(w,1) w = w.repeat(out_channels, 1, 1, 1) w = w.repeat(1, in_channels, 1, 1) weights.data = w + torch.rand(w.shape).cuda() return navg
Example #8
Source File: unguided_network.py From nconv with GNU General Public License v3.0 | 6 votes |
def navg_layer(self, kernel_size, init_stdev=0.5, in_channels=1, out_channels=1, initalizer='x', pos=False, groups=1): navg = nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=1, padding=(kernel_size[0]//2, kernel_size[1]//2), bias=False, groups=groups) weights = navg.weight if initalizer == 'x': # Xavier torch.nn.init.xavier_uniform(weights) elif initalizer == 'k': torch.nn.init.kaiming_uniform(weights) elif initalizer == 'p': mu=kernel_size[0]/2 dist = poisson(mu) x = np.arange(0, kernel_size[0]) y = np.expand_dims(dist.pmf(x),1) w = signal.convolve2d(y, y.transpose(), 'full') w = torch.FloatTensor(w).cuda() w = torch.unsqueeze(w,0) w = torch.unsqueeze(w,1) w = w.repeat(out_channels, 1, 1, 1) w = w.repeat(1, in_channels, 1, 1) weights.data = w + torch.rand(w.shape).cuda() return navg
Example #9
Source File: nconv.py From nconv with GNU General Public License v3.0 | 6 votes |
def init_parameters(self): # Init weights if self.init_method == 'x': # Xavier torch.nn.init.xavier_uniform_(self.weight) elif self.init_method == 'k': # Kaiming torch.nn.init.kaiming_uniform_(self.weight) elif self.init_method == 'p': # Poisson mu=self.kernel_size[0]/2 dist = poisson(mu) x = np.arange(0, self.kernel_size[0]) y = np.expand_dims(dist.pmf(x),1) w = signal.convolve2d(y, y.transpose(), 'full') w = torch.Tensor(w).type_as(self.weight) w = torch.unsqueeze(w,0) w = torch.unsqueeze(w,1) w = w.repeat(self.out_channels, 1, 1, 1) w = w.repeat(1, self.in_channels, 1, 1) self.weight.data = w + torch.rand(w.shape) # Init bias self.bias = torch.nn.Parameter(torch.zeros(self.out_channels)+0.01) # Non-negativity enforcement class
Example #10
Source File: image_pool.py From Recycle-GAN with MIT License | 6 votes |
def query(self, images): if self.pool_size == 0: return Variable(images) return_images = [] for image in images: image = torch.unsqueeze(image, 0) if self.num_imgs < self.pool_size: self.num_imgs = self.num_imgs + 1 self.images.append(image) return_images.append(image) else: p = random.uniform(0, 1) if p > 0.5: random_id = random.randint(0, self.pool_size-1) tmp = self.images[random_id].clone() self.images[random_id] = image return_images.append(tmp) else: return_images.append(image) return_images = Variable(torch.cat(return_images, 0)) return return_images
Example #11
Source File: model_utils.py From dgl with Apache License 2.0 | 6 votes |
def masked_softmax(matrix, mask, dim=-1, memory_efficient=True, mask_fill_value=-1e32): ''' masked_softmax for dgl batch graph code snippet contributed by AllenNLP (https://github.com/allenai/allennlp) ''' if mask is None: result = th.nn.functional.softmax(matrix, dim=dim) else: mask = mask.float() while mask.dim() < matrix.dim(): mask = mask.unsqueeze(1) if not memory_efficient: result = th.nn.functional.softmax(matrix * mask, dim=dim) result = result * mask result = result / (result.sum(dim=dim, keepdim=True) + 1e-13) else: masked_matrix = matrix.masked_fill((1 - mask).byte(), mask_fill_value) result = th.nn.functional.softmax(masked_matrix, dim=dim) return result
Example #12
Source File: losses.py From conditional-motion-propagation with MIT License | 6 votes |
def tobin(self, target): indxneg = target.data[:,0,:,:] < 0 eps = torch.zeros(target.data[:,0,:,:].size()).cuda() epsind = target.data[:,0,:,:] == 0 eps[epsind] += 1e-5 angle = torch.atan(target.data[:,1,:,:] / (target.data[:,0,:,:] + eps)) angle[indxneg] += np.pi angle += np.pi / 2 # 0 to 2pi angle = torch.clamp(angle, 0, 2 * np.pi - 1e-3) radius = torch.sqrt(target.data[:,0,:,:] ** 2 + target.data[:,1,:,:] ** 2) radius = torch.clamp(radius, 0, self.fmax - 1e-3) quantized_angle = torch.floor(self.abins * angle / (2 * np.pi)) if self.quantize_strategy == 'linear': quantized_radius = torch.floor(self.rbins * radius / self.fmax) elif self.quantize_strategy == 'quadratic': quantized_radius = torch.floor(self.rbins * torch.sqrt(radius / self.fmax)) else: raise Exception("No such quantize strategy: {}".format(self.quantize_strategy)) quantized_target = torch.autograd.Variable(torch.cat([torch.unsqueeze(quantized_angle, 1), torch.unsqueeze(quantized_radius, 1)], dim=1)) return quantized_target.type(torch.cuda.LongTensor)
Example #13
Source File: functional.py From PySyft with Apache License 2.0 | 6 votes |
def pool2d(tensor, kernel_size: int = 2, stride: int = 2, mode="max"): assert len(tensor.shape) < 5 if len(tensor.shape) == 2: return _pool(tensor, kernel_size, stride, mode) if len(tensor.shape) == 3: return torch.squeeze(pool2d(torch.unsqueeze(tensor, dim=0), kernel_size, stride, mode)) batches = tensor.shape[0] channels = tensor.shape[1] out_shape = ( batches, channels, (tensor.shape[2] - kernel_size) // stride + 1, (tensor.shape[3] - kernel_size) // stride + 1, ) result = [] for batch in range(batches): for channel in range(channels): result.append(_pool(tensor[batch][channel], kernel_size, stride, mode)) result = torch.stack(result).reshape(out_shape) return result
Example #14
Source File: model_utils.py From dgl with Apache License 2.0 | 6 votes |
def batch2tensor(batch_adj, batch_feat, node_per_pool_graph): """ transform a batched graph to batched adjacency tensor and node feature tensor """ batch_size = int(batch_adj.size()[0] / node_per_pool_graph) adj_list = [] feat_list = [] for i in range(batch_size): start = i * node_per_pool_graph end = (i + 1) * node_per_pool_graph adj_list.append(batch_adj[start:end, start:end]) feat_list.append(batch_feat[start:end, :]) adj_list = list(map(lambda x: th.unsqueeze(x, 0), adj_list)) feat_list = list(map(lambda x: th.unsqueeze(x, 0), feat_list)) adj = th.cat(adj_list, dim=0) feat = th.cat(feat_list, dim=0) return feat, adj
Example #15
Source File: CycleGAN.py From Deep-learning-with-cats with GNU General Public License v3.0 | 6 votes |
def query(self, images): if self.pool_size == 0: return images return_images = [] for image in images.data: image = torch.unsqueeze(image, 0) if self.num_imgs < self.pool_size: self.num_imgs = self.num_imgs + 1 self.images.append(image) return_images.append(image) else: p = random.uniform(0, 1) if p > 0.5: random_id = random.randint(0, self.pool_size-1) tmp = self.images[random_id].clone() self.images[random_id] = image return_images.append(tmp) else: return_images.append(image) return_images = Variable(torch.cat(return_images, 0)) return return_images # Initialize fake image pools
Example #16
Source File: visualize.py From RAdam with Apache License 2.0 | 6 votes |
def colorize(x): ''' Converts a one-channel grayscale image to a color heatmap image ''' if x.dim() == 2: torch.unsqueeze(x, 0, out=x) if x.dim() == 3: cl = torch.zeros([3, x.size(1), x.size(2)]) cl[0] = gauss(x,.5,.6,.2) + gauss(x,1,.8,.3) cl[1] = gauss(x,1,.5,.3) cl[2] = gauss(x,1,.2,.3) cl[cl.gt(1)] = 1 elif x.dim() == 4: cl = torch.zeros([x.size(0), 3, x.size(2), x.size(3)]) cl[:,0,:,:] = gauss(x,.5,.6,.2) + gauss(x,1,.8,.3) cl[:,1,:,:] = gauss(x,1,.5,.3) cl[:,2,:,:] = gauss(x,1,.2,.3) return cl
Example #17
Source File: utils.py From Semantic-Aware-Scene-Recognition with MIT License | 6 votes |
def getclassAccuracy(output, target, nclasses, topk=(1,)): """ Computes the top-k accuracy between output and target and aggregates it by class :param output: output vector from the network :param target: ground-truth :param nclasses: nclasses in the problem :param topk: Top-k results desired, i.e. top1, top2, top5 :return: topk vectors aggregated by class """ maxk = max(topk) score, label_index = output.topk(k=maxk, dim=1, largest=True, sorted=True) correct = label_index.eq(torch.unsqueeze(target, 1)) ClassAccuracyRes = [] for k in topk: ClassAccuracy = torch.zeros([1, nclasses], dtype=torch.uint8).cuda() correct_k = correct[:, :k].sum(1) for n in range(target.shape[0]): ClassAccuracy[0, target[n]] += correct_k[n].byte() ClassAccuracyRes.append(ClassAccuracy) return ClassAccuracyRes
Example #18
Source File: visualize.py From Random-Erasing with Apache License 2.0 | 6 votes |
def colorize(x): ''' Converts a one-channel grayscale image to a color heatmap image ''' if x.dim() == 2: torch.unsqueeze(x, 0, out=x) if x.dim() == 3: cl = torch.zeros([3, x.size(1), x.size(2)]) cl[0] = gauss(x,.5,.6,.2) + gauss(x,1,.8,.3) cl[1] = gauss(x,1,.5,.3) cl[2] = gauss(x,1,.2,.3) cl[cl.gt(1)] = 1 elif x.dim() == 4: cl = torch.zeros([x.size(0), 3, x.size(2), x.size(3)]) cl[:,0,:,:] = gauss(x,.5,.6,.2) + gauss(x,1,.8,.3) cl[:,1,:,:] = gauss(x,1,.5,.3) cl[:,2,:,:] = gauss(x,1,.2,.3) return cl
Example #19
Source File: FFM_Multi_PyTorch.py From Awesome-RecSystem-Models with MIT License | 6 votes |
def forward(self, x): # 先计算得到线性的那一部分 linear_part = self.linear(x) # 计算交叉部分 interaction_part = 0.0 for i in range(self.fea_num): for j in range(i + 1, self.fea_num): v_ifj = self.v[i, self.field_map_dict[j], :, :] v_jfi = self.v[j, self.field_map_dict[i], :, :] xij = torch.unsqueeze(x[:, i] * x[:, j], dim=1) v_ijji = torch.unsqueeze(torch.sum(v_ifj * v_jfi, dim=0), dim=0) interaction_part += torch.mm(xij, v_ijji) output = linear_part + interaction_part output = torch.log_softmax(output, dim=1) return output
Example #20
Source File: MessageFunction.py From nmp_qc with MIT License | 6 votes |
def m_ggnn(self, h_v, h_w, e_vw, opt={}): m = Variable(torch.zeros(h_w.size(0), h_w.size(1), self.args['out']).type_as(h_w.data)) for w in range(h_w.size(1)): if torch.nonzero(e_vw[:, w, :].data).size(): for i, el in enumerate(self.args['e_label']): ind = (el == e_vw[:,w,:]).type_as(self.learn_args[0][i]) parameter_mat = self.learn_args[0][i][None, ...].expand(h_w.size(0), self.learn_args[0][i].size(0), self.learn_args[0][i].size(1)) m_w = torch.transpose(torch.bmm(torch.transpose(parameter_mat, 1, 2), torch.transpose(torch.unsqueeze(h_w[:, w, :], 1), 1, 2)), 1, 2) m_w = torch.squeeze(m_w) m[:,w,:] = ind.expand_as(m_w)*m_w return m
Example #21
Source File: DGCNN.py From gnn-comparison with GNU General Public License v3.0 | 6 votes |
def forward(self, data): # Implement Equation 4.2 of the paper i.e. concat all layers' graph representations and apply linear model # note: this can be decomposed in one smaller linear model per layer x, edge_index, batch = data.x, data.edge_index, data.batch hidden_repres = [] for conv in self.convs: x = torch.tanh(conv(x, edge_index)) hidden_repres.append(x) # apply sortpool x_to_sortpool = torch.cat(hidden_repres, dim=1) x_1d = global_sort_pool(x_to_sortpool, batch, self.k) # in the code the authors sort the last channel only # apply 1D convolutional layers x_1d = torch.unsqueeze(x_1d, dim=1) conv1d_res = F.relu(self.conv1d_params1(x_1d)) conv1d_res = self.maxpool1d(conv1d_res) conv1d_res = F.relu(self.conv1d_params2(conv1d_res)) conv1d_res = conv1d_res.reshape(conv1d_res.shape[0], -1) # apply dense layer out_dense = self.dense_layer(conv1d_res) return out_dense
Example #22
Source File: dueling_policy.py From rlgraph with Apache License 2.0 | 5 votes |
def _graph_fn_calculate_q_values(self, state_value, advantage_values): """ Args: state_value (SingleDataOp): The single node state-value output. advantage_values (SingleDataOp): The already reshaped advantage-values. Returns: SingleDataOp: The calculated, reshaped Q values (for each composite action) based on: Q = V + [A - mean(A)] """ # Use the very first node as value function output. # Use all following nodes as advantage function output. if get_backend() == "tf": # Calculate the q-values according to [1] and return. mean_advantages = tf.reduce_mean(input_tensor=advantage_values, axis=-1, keepdims=True) # Make sure we broadcast the state_value correctly for the upcoming q_value calculation. state_value_expanded = state_value for _ in range(get_rank(advantage_values) - 2): state_value_expanded = tf.expand_dims(state_value_expanded, axis=1) q_values = state_value_expanded + advantage_values - mean_advantages # q-values return q_values elif get_backend() == "pytorch": mean_advantages = torch.mean(advantage_values, dim=-1, keepdim=True) # Make sure we broadcast the state_value correctly for the upcoming q_value calculation. state_value_expanded = state_value for _ in range(get_rank(advantage_values) - 2): state_value_expanded = torch.unsqueeze(state_value_expanded, dim=1) q_values = state_value_expanded + advantage_values - mean_advantages # q-values return q_values
Example #23
Source File: model.py From RelationNetworks-CLEVR with MIT License | 5 votes |
def build_coord_tensor(self, b, d): coords = torch.linspace(-d/2., d/2., d) x = coords.unsqueeze(0).repeat(d, 1) y = coords.unsqueeze(1).repeat(1, d) ct = torch.stack((x,y)) # broadcast to all batches # TODO: upgrade pytorch and use broadcasting ct = ct.unsqueeze(0).repeat(b, 1, 1, 1) self.coord_tensor = Variable(ct, requires_grad=False) if self.on_gpu: self.coord_tensor = self.coord_tensor.cuda()
Example #24
Source File: utils.py From cortex with BSD 3-Clause "New" or "Revised" License | 5 votes |
def cross_correlation(X, remove_diagonal=False): X_s = X / X.std(0) X_m = X_s - X_s.mean(0) b, dim = X_m.size() correlations = (X_m.unsqueeze(2).expand(b, dim, dim) * X_m.unsqueeze(1).expand(b, dim, dim)).sum(0) / float(b) if remove_diagonal: Id = torch.eye(dim) Id = torch.autograd.Variable(Id.cuda(), requires_grad=False) correlations -= Id return correlations
Example #25
Source File: sparse_image_warp_pytorch.py From SpecAugment with Apache License 2.0 | 5 votes |
def apply_interpolation(query_points, train_points, w, v, order): """Apply polyharmonic interpolation model to data. Given coefficients w and v for the interpolation model, we evaluate interpolated function values at query_points. Args: query_points: `[b, m, d]` x values to evaluate the interpolation at train_points: `[b, n, d]` x values that act as the interpolation centers ( the c variables in the wikipedia article) w: `[b, n, k]` weights on each interpolation center v: `[b, d, k]` weights on each input dimension order: order of the interpolation Returns: Polyharmonic interpolation evaluated at points defined in query_points. """ query_points = query_points.unsqueeze(0) # First, compute the contribution from the rbf term. pairwise_dists = cross_squared_distance_matrix(query_points.float(), train_points.float()) phi_pairwise_dists = phi(pairwise_dists, order) rbf_term = torch.matmul(phi_pairwise_dists, w) # Then, compute the contribution from the linear term. # Pad query_points with ones, for the bias term in the linear model. ones = torch.ones_like(query_points[..., :1]) query_points_pad = torch.cat(( query_points, ones ), 2).float() linear_term = torch.matmul(query_points_pad, v) return rbf_term + linear_term
Example #26
Source File: pairwise.py From pykg2vec with MIT License | 5 votes |
def embed(self, h, r, t): """Function to get the embedding value. Args: h (Tensor): Head entities ids. r (Tensor): Relation ids of the triple. t (Tensor): Tail entity ids of the triple. Returns: Tensors: Returns head, relation and tail embedding Tensors. """ h_e = self.ent_embeddings(h) r_e = self.rel_embeddings(r) t_e = self.ent_embeddings(t) h_e = F.normalize(h_e, p=2, dim=-1) r_e = F.normalize(r_e, p=2, dim=-1) t_e = F.normalize(t_e, p=2, dim=-1) h_e = torch.unsqueeze(h_e, 1) t_e = torch.unsqueeze(t_e, 1) # [b, 1, k] matrix = self.rel_matrix(r) # [b, k, d] transform_h_e = self.transform(h_e, matrix) transform_t_e = self.transform(t_e, matrix) # [b, 1, d] = [b, 1, k] * [b, k, d] h_e = torch.squeeze(transform_h_e, axis=1) t_e = torch.squeeze(transform_t_e, axis=1) # [b, d] return h_e, r_e, t_e
Example #27
Source File: tensor.py From dgl with Apache License 2.0 | 5 votes |
def unsqueeze(input, dim): return th.unsqueeze(input, dim)
Example #28
Source File: DeepFM_PyTorch.py From Awesome-RecSystem-Models with MIT License | 5 votes |
def forward(self, feat_index, feat_value, use_dropout=True): feat_value = torch.unsqueeze(feat_value, dim=2) # None * F * 1 # Step1: 先计算一阶线性的部分 sum_square part first_weights = self.first_weights(feat_index) # None * F * 1 first_weight_value = torch.mul(first_weights, feat_value) y_first_order = torch.sum(first_weight_value, dim=2) # None * F if use_dropout: y_first_order = nn.Dropout(self.dropout_fm[0])(y_first_order) # None * F # Step2: 再计算二阶部分 secd_feat_emb = self.feat_embeddings(feat_index) # None * F * K feat_emd_value = secd_feat_emb * feat_value # None * F * K(广播) # sum_square part summed_feat_emb = torch.sum(feat_emd_value, 1) # None * K interaction_part1 = torch.pow(summed_feat_emb, 2) # None * K # squared_sum part squared_feat_emd_value = torch.pow(feat_emd_value, 2) # None * K interaction_part2 = torch.sum(squared_feat_emd_value, dim=1) # None * K y_secd_order = 0.5 * torch.sub(interaction_part1, interaction_part2) if use_dropout: y_secd_order = nn.Dropout(self.dropout_fm[1])(y_secd_order) # Step3: Deep部分 y_deep = feat_emd_value.reshape(-1, self.num_field * self.embedding_size) # None * (F * K) if use_dropout: y_deep = nn.Dropout(self.dropout_deep[0])(y_deep) for i in range(1, len(self.layer_sizes) + 1): y_deep = getattr(self, 'linear_' + str(i))(y_deep) y_deep = getattr(self, 'batchNorm_' + str(i))(y_deep) y_deep = F.relu(y_deep) if use_dropout: y_deep = getattr(self, 'dropout_' + str(i))(y_deep) concat_input = torch.cat((y_first_order, y_secd_order, y_deep), dim=1) output = self.fc(concat_input) return output
Example #29
Source File: interaction.py From DeepCTR-Torch with Apache License 2.0 | 5 votes |
def forward(self, inputs): if len(inputs.shape) != 3: raise ValueError( "Unexpected inputs dimensions %d, expect to be 3 dimensions" % (len(inputs.shape))) Z = torch.mean(inputs, dim=-1, out=None) A = self.excitation(Z) V = torch.mul(inputs, torch.unsqueeze(A, dim=2)) return V
Example #30
Source File: loss.py From Pytorch-Instance-Lane-Segmentation with MIT License | 5 votes |
def bootstrapped_cross_entropy2d(input, target, K, weight=None, size_average=True): batch_size = input.size()[0] def _bootstrap_xentropy_single(input, target, K, weight=None, size_average=True): n, c, h, w = input.size() log_p = F.log_softmax(input, dim=1) log_p = log_p.transpose(1, 2).transpose(2, 3).contiguous().view(-1, c) log_p = log_p[target.view(n * h * w, 1).repeat(1, c) >= 0] log_p = log_p.view(-1, c) mask = target >= 0 target = target[mask] loss = F.nll_loss(log_p, target, weight=weight, ignore_index=250, reduce=False, size_average=False) topk_loss, _ = loss.topk(K) reduced_topk_loss = topk_loss.sum() / K return reduced_topk_loss loss = 0.0 # Bootstrap from each image not entire batch for i in range(batch_size): loss += _bootstrap_xentropy_single(input=torch.unsqueeze(input[i], 0), target=torch.unsqueeze(target[i], 0), K=K, weight=weight, size_average=size_average) return loss / float(batch_size)