diff --git a/examples/face_adversarial_attack/example/loss_design.py b/examples/face_adversarial_attack/example/loss_design.py index 61d718a..77bbaa4 100644 --- a/examples/face_adversarial_attack/example/loss_design.py +++ b/examples/face_adversarial_attack/example/loss_design.py @@ -20,7 +20,7 @@ import mindspore.dataset.vision.py_transforms as P -class TrainOneStepCell(nn.Cell): +class MyTrainOneStepCell(nn.TrainOneStepCell): """ Encapsulation class of network training. @@ -34,11 +34,7 @@ class TrainOneStepCell(nn.Cell): """ def __init__(self, network, optimizer, sens=1.0): - super(TrainOneStepCell, self).__init__(auto_prefix=False) - self.network = network - self.network.set_grad() - self.optimizer = optimizer - self.weights = self.optimizer.parameters + super(MyTrainOneStepCell, self).__init__(network, optimizer,sens) self.grad = ops.composite.GradOperation(get_all=True, sens_param=False) def construct(self, *inputs): @@ -47,6 +43,8 @@ class TrainOneStepCell(nn.Cell): grads = self.grad(self.network)(*inputs) self.optimizer(grads) return grads, loss + + @@ -78,7 +76,7 @@ class MyWithLossCell(nn.Cell): return self.net -class FaceLossTargeTattack(nn.Cell): +class FaceLossTargetAttack(nn.Cell): """The loss function of the target attack""" def __init__(self, target_emb): @@ -96,20 +94,6 @@ class FaceLossTargeTattack(nn.Cell): self.reduce_mean = ops.ReduceMean() def construct(self, adversarial_emb, input_emb, mask_tensor): - #像素平滑 - # vert_diff = mask_tensor[:, 1:] - mask_tensor[:, :-1] - # hor_diff = mask_tensor[:, :, 1:] - mask_tensor[:, :, :-1] - # vert_diff_sq = self.pow(vert_diff, 2) - # hor_diff_sq = self.pow(hor_diff, 2) - # A = self.zeroslike(Tensor(self.uniformreal((3, 1, 112)))) - # B = self.zeroslike(Tensor(self.uniformreal((3, 112, 1)))) - # vert_pad = self.concat_op1((vert_diff_sq, A)) - # hor_pad = self.concat_op2((hor_diff_sq, B)) - # tv_sum = vert_pad + hor_pad - # tv = ops.functional.sqrt(tv_sum + 1e-5) - # tv_final_sum = self.sum(tv) - # tv_loss = (1e-4) * tv_final_sum - # print("tv_loss:",tv_loss) prod_sum = self.reduce_sum(adversarial_emb * self.target_emb, (1,)) square1 = self.reduce_sum(ops.functional.square(adversarial_emb), (1,)) square2 = self.reduce_sum(ops.functional.square(self.target_emb), (1,)) @@ -137,21 +121,6 @@ class FaceLossNoTargetAttack(nn.Cell): self.reduce_mean = ops.ReduceMean() def construct(self, adversarial_emb, input_emb, mask_tensor): - # 像素平滑 - # vert_diff = mask_tensor[:, 1:] - mask_tensor[:, :-1] # - # hor_diff = mask_tensor[:, :, 1:] - mask_tensor[:, :, :-1] - # vert_diff_sq = self.pow(vert_diff, 2) - # hor_diff_sq = self.pow(hor_diff, 2) - # A = self.zeroslike(Tensor(self.uniformreal((3, 1, 112)))) # - # B = self.zeroslike(Tensor(self.uniformreal((3, 112, 1)))) - # vert_pad = self.concat_op1((vert_diff_sq, A)) - # hor_pad = self.concat_op2((hor_diff_sq, B)) - # tv_sum = vert_pad + hor_pad - # tv = ops.functional.sqrt(tv_sum + 1e-5) - # tv_final_sum = self.sum(tv) - # tv_loss = (1e-4) * tv_final_sum - # print("tv_loss:",tv_loss) - prod_sum = self.reduce_sum(adversarial_emb * input_emb, (1,)) square1 = self.reduce_sum(ops.functional.square(adversarial_emb), (1,)) square2 = self.reduce_sum(ops.functional.square(input_emb), (1,))