def forward(self, x, target=None, mixup=False, mixup_hidden=False, args=None, grad=None, noise=None, adv_mask1=0, adv_mask2=0, mp=None): if mixup_hidden: layer_mix = random.randint(0, 2) elif mixup: layer_mix = 0 else: layer_mix = None out = x if target is not None: target_reweighted = to_one_hot(target, self.num_classes) if layer_mix == 0: out, target_reweighted = mixup_process(out, target_reweighted, args=args, grad=grad, noise=noise, adv_mask1=adv_mask1, adv_mask2=adv_mask2, mp=mp) out = self.conv1(out) out = self.layer1(out) if layer_mix == 1: out, target_reweighted = mixup_process(out, target_reweighted, args=args, hidden=True) out = self.layer2(out) if layer_mix == 2: out, target_reweighted = mixup_process(out, target_reweighted, args=args, hidden=True) out = self.layer3(out) if layer_mix == 3: out, target_reweighted = mixup_process(out, target_reweighted, args=args, hidden=True) out = act(self.bn1(out)) out = F.avg_pool2d(out, 8) out = out.reshape(out.size(0), -1) out = self.linear(out) if target is not None: return out, target_reweighted else: return out
def forward(self, x, target= None, mixup=False, mixup_hidden=False, args=None, grad=None, noise=None, adv_mask1=0, adv_mask2=0, profile=None): if mixup_hidden: layer_mix = random.randint(0,2) elif mixup: layer_mix = 0 else: layer_mix = None out = x if target is not None : target_reweighted = to_one_hot(target,self.num_classes) end =time.time() if layer_mix == 0: out, target_reweighted = mixup_process(out, target_reweighted, args=args, grad=grad, noise=noise, adv_mask1=adv_mask1, adv_mask2=adv_mask2) profile['gc'].append(time.time()-end) if len(profile['data'])%10 == 0: print('gc : ', np.mean(profile['gc'])) out = self.conv1(out) out = self.layer1(out) if layer_mix == 1: out, target_reweighted = mixup_process(out, target_reweighted, args=args, hidden=True) out = self.layer2(out) if layer_mix == 2: out, target_reweighted = mixup_process(out, target_reweighted, args=args, hidden=True) out = self.layer3(out) if layer_mix == 3: out, target_reweighted = mixup_process(out, target_reweighted, args=args, hidden=True) out = self.layer4(out) out = F.avg_pool2d(out, 4) out = out.view(out.size(0), -1) out = self.linear(out) if target is not None: return out, target_reweighted else: return out
def forward(self, x, target=None, mixup=False, mixup_hidden=False, args=None, grad=None, noise=None, adv_mask1=0, adv_mask2=0): if mixup_hidden: layer_mix = random.randint(0, 2) elif mixup: layer_mix = 0 else: layer_mix = None out = x if target is not None: target_reweighted = to_one_hot(target, self.num_classes) if layer_mix == 0: out, target_reweighted = mixup_process(out, target_reweighted, args=args, grad=grad, noise=noise, adv_mask1=adv_mask1, adv_mask2=adv_mask2) out = self.conv1(out) out = self.layer1(out) if layer_mix == 1: out, target_reweighted = mixup_process(out, target_reweighted, args=args, hidden=True) out = self.layer2(out) if layer_mix == 2: out, target_reweighted = mixup_process(out, target_reweighted, args=args, hidden=True) out = self.layer3(out) if layer_mix == 3: out, target_reweighted = mixup_process(out, target_reweighted, args=args, hidden=True) out = self.layer4(out) out = F.avg_pool2d(out, out.shape[-1]) out = out.view(out.size(0), -1) if self.weight_type is not None: out = F.normalize(out, p=2, dim=1) out = self.linear(out) if target is not None: return out, target_reweighted else: return out