Python torch.addmm() Examples
The following are 30
code examples of torch.addmm().
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: mglattice.py From Chinese_NRE with MIT License | 6 votes |
def forward(self, input_, hx): """ Args: input_: A (batch, input_size) tensor containing input features. hx: A tuple (h_0, c_0), which contains the initial hidden and cell state, where the size of both states is (batch, hidden_size). Returns: h_1, c_1: Tensors containing the next hidden and cell state. """ h_0, c_0 = hx batch_size = h_0.size(0) bias_batch = (self.bias.unsqueeze(0).expand(batch_size, *self.bias.size())) wh_b = torch.addmm(bias_batch, h_0, self.weight_hh) wi = torch.mm(input_, self.weight_ih) f, i, g = torch.split(wh_b + wi, self.hidden_size, dim=1) # Cell states c_1 = torch.sigmoid(f)*c_0 + torch.sigmoid(i)*torch.tanh(g) return c_1
Example #2
Source File: bnlstm.py From benchmark with BSD 3-Clause "New" or "Revised" License | 6 votes |
def forward(self, input_, hx): """ Args: input_: A (batch, input_size) tensor containing input features. hx: A tuple (h_0, c_0), which contains the initial hidden and cell state, where the size of both states is (batch, hidden_size). Returns: h_1, c_1: Tensors containing the next hidden and cell state. """ h_0, c_0 = hx batch_size = h_0.size(0) bias_batch = (self.bias.unsqueeze(0) .expand(batch_size, *self.bias.size())) wh_b = torch.addmm(bias_batch, h_0, self.weight_hh) wi = torch.mm(input_, self.weight_ih) f, i, o, g = torch.split(wh_b + wi, self.hidden_size, dim=1) c_1 = torch.sigmoid(f) * c_0 + torch.sigmoid(i) * torch.tanh(g) h_1 = torch.sigmoid(o) * torch.tanh(c_1) return h_1, c_1
Example #3
Source File: functional.py From SlowFast-Network-pytorch with MIT License | 6 votes |
def linear(input, weight, bias=None): # type: (Tensor, Tensor, Optional[Tensor]) -> Tensor r""" Applies a linear transformation to the incoming data: :math:`y = xA^T + b`. Shape: - Input: :math:`(N, *, in\_features)` where `*` means any number of additional dimensions - Weight: :math:`(out\_features, in\_features)` - Bias: :math:`(out\_features)` - Output: :math:`(N, *, out\_features)` """ if input.dim() == 2 and bias is not None: # fused op is marginally faster ret = torch.addmm(torch.jit._unwrap_optional(bias), input, weight.t()) else: output = input.matmul(weight.t()) if bias is not None: output += torch.jit._unwrap_optional(bias) ret = output return ret
Example #4
Source File: quaternion_ops.py From Pytorch-Quaternion-Neural-Networks with GNU General Public License v3.0 | 6 votes |
def forward(ctx, input, r_weight, i_weight, j_weight, k_weight, bias=None): ctx.save_for_backward(input, r_weight, i_weight, j_weight, k_weight, bias) check_input(input) cat_kernels_4_r = torch.cat([r_weight, -i_weight, -j_weight, -k_weight], dim=0) cat_kernels_4_i = torch.cat([i_weight, r_weight, -k_weight, j_weight], dim=0) cat_kernels_4_j = torch.cat([j_weight, k_weight, r_weight, -i_weight], dim=0) cat_kernels_4_k = torch.cat([k_weight, -j_weight, i_weight, r_weight], dim=0) cat_kernels_4_quaternion = torch.cat([cat_kernels_4_r, cat_kernels_4_i, cat_kernels_4_j, cat_kernels_4_k], dim=1) if input.dim() == 2 : if bias is not None: return torch.addmm(bias, input, cat_kernels_4_quaternion) else: return torch.mm(input, cat_kernels_4_quaternion) else: output = torch.matmul(input, cat_kernels_4_quaternion) if bias is not None: return output+bias else: return output # This function has only a single output, so it gets only one gradient
Example #5
Source File: bnlstm.py From FewShotLearning with MIT License | 6 votes |
def forward(self, input_, hx): """ Args: input_: A (batch, input_size) tensor containing input features. hx: A tuple (h_0, c_0), which contains the initial hidden and cell state, where the size of both states is (batch, hidden_size). Returns: h_1, c_1: Tensors containing the next hidden and cell state. """ h_0, c_0 = hx batch_size = h_0.size(0) bias_batch = (self.bias.unsqueeze(0) .expand(batch_size, *self.bias.size())) wh_b = torch.addmm(bias_batch, h_0, self.weight_hh) wi = torch.mm(input_, self.weight_ih) f, i, o, g = torch.split(wh_b + wi, split_size=self.hidden_size, dim=1) c_1 = torch.sigmoid(f)*c_0 + torch.sigmoid(i)*torch.tanh(g) h_1 = torch.sigmoid(o) * torch.tanh(c_1) return h_1, c_1
Example #6
Source File: polynomial_kernel.py From gpytorch with MIT License | 6 votes |
def forward( self, x1: torch.Tensor, x2: torch.Tensor, diag: Optional[bool] = False, last_dim_is_batch: Optional[bool] = False, **params, ) -> torch.Tensor: offset = self.offset.view(*self.batch_shape, 1, 1) if last_dim_is_batch: x1 = x1.transpose(-1, -2).unsqueeze(-1) x2 = x2.transpose(-1, -2).unsqueeze(-1) if diag: return ((x1 * x2).sum(dim=-1) + self.offset).pow(self.power) if x1.dim() == 2 and x2.dim() == 2: return torch.addmm(offset, x1, x2.transpose(-2, -1)).pow(self.power) else: return (torch.matmul(x1, x2.transpose(-2, -1)) + offset).pow(self.power)
Example #7
Source File: quaternionops.py From Quaternion-Recurrent-Neural-Networks with GNU General Public License v3.0 | 6 votes |
def forward(ctx, input, r_weight, i_weight, j_weight, k_weight, bias=None): ctx.save_for_backward(input, r_weight, i_weight, j_weight, k_weight, bias) check_input(input) cat_kernels_4_r = torch.cat([r_weight, -i_weight, -j_weight, -k_weight], dim=0) cat_kernels_4_i = torch.cat([i_weight, r_weight, -k_weight, j_weight], dim=0) cat_kernels_4_j = torch.cat([j_weight, k_weight, r_weight, -i_weight], dim=0) cat_kernels_4_k = torch.cat([k_weight, -j_weight, i_weight, r_weight], dim=0) cat_kernels_4_quaternion = torch.cat([cat_kernels_4_r, cat_kernels_4_i, cat_kernels_4_j, cat_kernels_4_k], dim=1) if input.dim() == 2 : if bias is not None: return torch.addmm(bias, input, cat_kernels_4_quaternion) else: return torch.mm(input, cat_kernels_4_quaternion) else: output = torch.matmul(input, cat_kernels_4_quaternion) if bias is not None: return output+bias else: return output # This function has only a single output, so it gets only one gradient
Example #8
Source File: modules.py From fastNLP with Apache License 2.0 | 6 votes |
def forward(self, input_, hx): """ Args: input_: A (batch, input_size) tensor containing input features. hx: A tuple (h_0, c_0), which contains the initial hidden and cell state, where the size of both states is (batch, hidden_size). Returns: h_1, c_1: Tensors containing the next hidden and cell state. """ h_0, c_0 = hx batch_size = h_0.size(0) bias_batch = (self.bias.unsqueeze(0).expand(batch_size, *self.bias.size())) wh_b = torch.addmm(bias_batch, h_0, self.weight_hh) wi = torch.mm(input_, self.weight_ih) f, i, g = torch.split(wh_b + wi, split_size_or_sections=self.hidden_size, dim=1) c_1 = torch.sigmoid(f)*c_0 + torch.sigmoid(i)*torch.tanh(g) return c_1
Example #9
Source File: quaternion_ops.py From Quaternion-Recurrent-Neural-Networks with GNU General Public License v3.0 | 6 votes |
def forward(ctx, input, r_weight, i_weight, j_weight, k_weight, bias=None): ctx.save_for_backward(input, r_weight, i_weight, j_weight, k_weight, bias) check_input(input) cat_kernels_4_r = torch.cat([r_weight, -i_weight, -j_weight, -k_weight], dim=0) cat_kernels_4_i = torch.cat([i_weight, r_weight, -k_weight, j_weight], dim=0) cat_kernels_4_j = torch.cat([j_weight, k_weight, r_weight, -i_weight], dim=0) cat_kernels_4_k = torch.cat([k_weight, -j_weight, i_weight, r_weight], dim=0) cat_kernels_4_quaternion = torch.cat([cat_kernels_4_r, cat_kernels_4_i, cat_kernels_4_j, cat_kernels_4_k], dim=1) if input.dim() == 2 : if bias is not None: return torch.addmm(bias, input, cat_kernels_4_quaternion) else: return torch.mm(input, cat_kernels_4_quaternion) else: output = torch.matmul(input, cat_kernels_4_quaternion) if bias is not None: return output+bias else: return output # This function has only a single output, so it gets only one gradient
Example #10
Source File: test_caffe2.py From onnx-fb-universe with MIT License | 5 votes |
def test_addmm(self): class MyModel(torch.nn.Module): def __init__(self): super(MyModel, self).__init__() def forward(self, ma, m1, m2): return torch.addmm(ma, m1, m2) ma = Variable(torch.randn(5)) m1 = Variable(torch.randn(3, 4)) m2 = Variable(torch.randn(4, 5)) self.run_model_test(MyModel(), train=False, input=(ma, m1, m2), batch_size=BATCH_SIZE, use_gpu=False)
Example #11
Source File: deconv.py From deconvolution with GNU General Public License v3.0 | 5 votes |
def forward(self, input): if self.training: # 1. reshape X=input.view(-1, self.block) # 2. subtract mean X_mean = X.mean(0) X = X - X_mean.unsqueeze(0) self.running_mean.mul_(1 - self.momentum) self.running_mean.add_(X_mean.detach() * self.momentum) # 3. calculate COV, COV^(-0.5), then deconv # Cov = X.t() @ X / X.shape[0] + self.eps * torch.eye(X.shape[1], dtype=X.dtype, device=X.device) Id = torch.eye(X.shape[1], dtype=X.dtype, device=X.device) Cov = torch.addmm(self.eps, Id, 1. / X.shape[0], X.t(), X) deconv = isqrt_newton_schulz_autograd(Cov, self.n_iter) # track stats for evaluation self.running_deconv.mul_(1 - self.momentum) self.running_deconv.add_(deconv.detach() * self.momentum) else: X_mean = self.running_mean deconv = self.running_deconv w = self.weight.view(-1, self.block) @ deconv b = self.bias if self.bias is not None: b = b - (w @ (X_mean.unsqueeze(1))).view(self.weight.shape[0], -1).sum(1) w = w.view(self.weight.shape) return F.linear(input, w, b)
Example #12
Source File: mglattice.py From Chinese_NRE with MIT License | 5 votes |
def forward(self, input_, c_input): """ Args: batch = 1 input_: A (batch, input_size) tensor containing input features. c_input: A list with size c_num,each element is the input ct from skip word (batch, hidden_size). hx: A tuple (h_0, c_0), which contains the initial hidden and cell state, where the size of both states is (batch, hidden_size). Returns: h_1, c_1: Tensors containing the next hidden and cell state. """ batch_size = input_.size(0) c_num = len(c_input) c_input_var = torch.cat(c_input, 0) alpha_bias_batch = (self.alpha_bias.unsqueeze(0).expand(batch_size, *self.alpha_bias.size())) c_input_var = c_input_var.squeeze(1) alpha_wi = torch.addmm(self.alpha_bias, input_, self.alpha_weight_ih).expand(c_num, self.hidden_size) alpha_wh = torch.mm(c_input_var, self.alpha_weight_hh) alpha = torch.sigmoid(alpha_wi + alpha_wh) alpha = torch.exp(alpha) alpha_sum = alpha.sum(0) # Alpha is softmax for each hidden element alpha = torch.div(alpha, alpha_sum) c_1 = c_input_var * alpha c_1 = c_1.sum(0).unsqueeze(0) return c_1
Example #13
Source File: model.py From gpt-2-Pytorch with MIT License | 5 votes |
def forward(self, x): size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.bias, x.view(-1, x.size(-1)), self.weight) x = x.view(*size_out) return x
Example #14
Source File: modeling_utils.py From HPSG-Neural-Parser with MIT License | 5 votes |
def forward(self, x): size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.bias, x.view(-1, x.size(-1)), self.weight) x = x.view(*size_out) return x
Example #15
Source File: modeling_openai.py From KagNet with MIT License | 5 votes |
def forward(self, x): if self.rf == 1: size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.bias, x.view(-1, x.size(-1)), self.weight) x = x.view(*size_out) else: raise NotImplementedError return x
Example #16
Source File: test_operators.py From onnx-fb-universe with MIT License | 5 votes |
def test_addmm(self): m1 = Variable(torch.randn(2, 3), requires_grad=True) m2 = Variable(torch.randn(3, 4), requires_grad=True) m3 = Variable(torch.randn(4), requires_grad=True) self.assertONNX(lambda x, y, z: torch.addmm(torch.addmm(z, x, y), x, y), (m1, m2, m3))
Example #17
Source File: pointwise_conv.py From claf with MIT License | 5 votes |
def forward(self, x): size_out = x.size()[:-1] + (self.num_filters,) x = torch.addmm(self.bias, x.contiguous().view(-1, x.size(-1)), self.weight) x = x.view(*size_out) return x
Example #18
Source File: model.py From gpt-2-flask-api with MIT License | 5 votes |
def forward(self, x): size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.bias, x.view(-1, x.size(-1)), self.weight) x = x.view(*size_out) return x
Example #19
Source File: model_pytorch.py From openai-gpt-pytorch with MIT License | 5 votes |
def forward(self, x): if self.rf == 1: size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.b, x.view(-1, x.size(-1)), self.w) x = x.view(*size_out) else: raise NotImplementedError return x
Example #20
Source File: deconv.py From deconvolution with GNU General Public License v3.0 | 5 votes |
def forward(self, input): if self.training: # 1. reshape X=input.view(-1, self.block) # 2. subtract mean X_mean = X.mean(0) X = X - X_mean.unsqueeze(0) self.running_mean.mul_(1 - self.momentum) self.running_mean.add_(X_mean.detach() * self.momentum) # 3. calculate COV, COV^(-0.5), then deconv # Cov = X.t() @ X / X.shape[0] + self.eps * torch.eye(X.shape[1], dtype=X.dtype, device=X.device) Id = torch.eye(X.shape[1], dtype=X.dtype, device=X.device) Cov = torch.addmm(self.eps, Id, 1. / X.shape[0], X.t(), X) deconv = isqrt_newton_schulz_autograd(Cov, self.n_iter) # track stats for evaluation self.running_deconv.mul_(1 - self.momentum) self.running_deconv.add_(deconv.detach() * self.momentum) else: X_mean = self.running_mean deconv = self.running_deconv w = self.weight.view(-1, self.block) @ deconv if self.bias is None: b = - (w @ (X_mean.unsqueeze(1))).view(self.weight.shape[0], -1).sum(1) else: b = self.bias - (w @ (X_mean.unsqueeze(1))).view(self.weight.shape[0], -1).sum(1) w = w.view(self.weight.shape) return F.linear(input, w, b)
Example #21
Source File: modeling_utils.py From Bert-Multi-Label-Text-Classification with MIT License | 5 votes |
def forward(self, x): size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.bias, x.view(-1, x.size(-1)), self.weight) x = x.view(*size_out) return x
Example #22
Source File: modeling_gpt2.py From KagNet with MIT License | 5 votes |
def forward(self, x): size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.bias, x.view(-1, x.size(-1)), self.weight) x = x.view(*size_out) return x
Example #23
Source File: modeling_openai.py From PPLM with Apache License 2.0 | 5 votes |
def forward(self, x): if self.rf == 1: size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.bias, x.view(-1, x.size(-1)), self.weight) x = x.view(*size_out) else: raise NotImplementedError return x
Example #24
Source File: model_pytorch.py From TRE with MIT License | 5 votes |
def forward(self, x): if self.rf == 1: size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.b, x.view(-1, x.size(-1)), self.w) x = x.view(*size_out) else: raise NotImplementedError return x
Example #25
Source File: modeling_utils.py From exbert with Apache License 2.0 | 5 votes |
def forward(self, x): size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.bias, x.view(-1, x.size(-1)), self.weight) x = x.view(*size_out) return x
Example #26
Source File: masked_conv.py From IoU-Uniform-R-CNN with Apache License 2.0 | 5 votes |
def forward(ctx, features, mask, weight, bias, padding=0, stride=1): assert mask.dim() == 3 and mask.size(0) == 1 assert features.dim() == 4 and features.size(0) == 1 assert features.size()[2:] == mask.size()[1:] pad_h, pad_w = _pair(padding) stride_h, stride_w = _pair(stride) if stride_h != 1 or stride_w != 1: raise ValueError( 'Stride could not only be 1 in masked_conv2d currently.') if not features.is_cuda: raise NotImplementedError out_channel, in_channel, kernel_h, kernel_w = weight.size() batch_size = features.size(0) out_h = int( math.floor((features.size(2) + 2 * pad_h - (kernel_h - 1) - 1) / stride_h + 1)) out_w = int( math.floor((features.size(3) + 2 * pad_w - (kernel_h - 1) - 1) / stride_w + 1)) mask_inds = torch.nonzero(mask[0] > 0) output = features.new_zeros(batch_size, out_channel, out_h, out_w) if mask_inds.numel() > 0: mask_h_idx = mask_inds[:, 0].contiguous() mask_w_idx = mask_inds[:, 1].contiguous() data_col = features.new_zeros(in_channel * kernel_h * kernel_w, mask_inds.size(0)) masked_conv2d_cuda.masked_im2col_forward(features, mask_h_idx, mask_w_idx, kernel_h, kernel_w, pad_h, pad_w, data_col) masked_output = torch.addmm(1, bias[:, None], 1, weight.view(out_channel, -1), data_col) masked_conv2d_cuda.masked_col2im_forward(masked_output, mask_h_idx, mask_w_idx, out_h, out_w, out_channel, output) return output
Example #27
Source File: masked_conv.py From RDSNet with Apache License 2.0 | 5 votes |
def forward(ctx, features, mask, weight, bias, padding=0, stride=1): assert mask.dim() == 3 and mask.size(0) == 1 assert features.dim() == 4 and features.size(0) == 1 assert features.size()[2:] == mask.size()[1:] pad_h, pad_w = _pair(padding) stride_h, stride_w = _pair(stride) if stride_h != 1 or stride_w != 1: raise ValueError( 'Stride could not only be 1 in masked_conv2d currently.') if not features.is_cuda: raise NotImplementedError out_channel, in_channel, kernel_h, kernel_w = weight.size() batch_size = features.size(0) out_h = int( math.floor((features.size(2) + 2 * pad_h - (kernel_h - 1) - 1) / stride_h + 1)) out_w = int( math.floor((features.size(3) + 2 * pad_w - (kernel_h - 1) - 1) / stride_w + 1)) mask_inds = torch.nonzero(mask[0] > 0) output = features.new_zeros(batch_size, out_channel, out_h, out_w) if mask_inds.numel() > 0: mask_h_idx = mask_inds[:, 0].contiguous() mask_w_idx = mask_inds[:, 1].contiguous() data_col = features.new_zeros(in_channel * kernel_h * kernel_w, mask_inds.size(0)) masked_conv2d_cuda.masked_im2col_forward(features, mask_h_idx, mask_w_idx, kernel_h, kernel_w, pad_h, pad_w, data_col) masked_output = torch.addmm(1, bias[:, None], 1, weight.view(out_channel, -1), data_col) masked_conv2d_cuda.masked_col2im_forward(masked_output, mask_h_idx, mask_w_idx, out_h, out_w, out_channel, output) return output
Example #28
Source File: modeling_gpt2.py From bert_on_stilts with Apache License 2.0 | 5 votes |
def forward(self, x): size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.bias, x.view(-1, x.size(-1)), self.weight) x = x.view(*size_out) return x
Example #29
Source File: modeling_openai.py From bert_on_stilts with Apache License 2.0 | 5 votes |
def forward(self, x): if self.rf == 1: size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.bias, x.view(-1, x.size(-1)), self.weight) x = x.view(*size_out) else: raise NotImplementedError return x
Example #30
Source File: gpt.py From comet-commonsense with Apache License 2.0 | 5 votes |
def forward(self, x): if self.rf == 1: size_out = x.size()[:-1] + (self.nf,) x = torch.addmm(self.b, x.view(-1, x.size(-1)), self.w) x = x.view(*size_out) else: raise NotImplementedError return x