def compute_weight(self): return self.weight_v * (self.weight_g / norm(self.weight_v, 0))
def forward(self, input): self.weight_v.data.mul_(self.mask) _norm = norm(self.weight_v, 0) + 1e-8 weight = self.weight_v * (self.weight_g.exp() / _norm) return F.conv2d(input, weight, self.bias, self.stride, self.padding, self.dilation, self.groups)
def reset_parameters(self): nn.init.normal_(self.weight_v, mean=0.0, std=0.05) self.weight_g.data.copy_(norm(self.weight_v, 0)) if self.bias is not None: nn.init.constant_(self.bias, 0)
def reset_parameters(self): nn.init.normal_(self.weight_v, mean=0.0, std=0.05) self.weight_v.data.mul_(self.mask) _norm = norm(self.weight_v, 0).data + 1e-8 self.weight_g.data.copy_(_norm.log()) nn.init.constant_(self.bias, 0)