Browse Source

update examples/face_adversarial_attack/example/loss_design.py.

MyTrainOneStepCell继承了nn.TrainOneStepCell减少了代码量;删除了无用代码;修改了命名错误。

Signed-off-by: 君君臣臣君 <mingjun@isrc.iscas.ac.cn>
pull/416/head
君君臣臣君 Gitee 3 years ago
parent
commit
57999aa8f9
No known key found for this signature in database GPG Key ID: 173E9B9CA92EEF8F
1 changed files with 5 additions and 36 deletions
  1. +5
    -36
      examples/face_adversarial_attack/example/loss_design.py

+ 5
- 36
examples/face_adversarial_attack/example/loss_design.py View File

@@ -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,))


Loading…
Cancel
Save