Browse Source

!127 update demo of security defense related to docs

Merge pull request !127 from pkuliuliu/master
tags/v1.2.1
mindspore-ci-bot Gitee 4 years ago
parent
commit
1f1fb13d64
1 changed files with 17 additions and 44 deletions
  1. +17
    -44
      examples/model_security/model_defenses/mnist_defense_nad.py

+ 17
- 44
examples/model_security/model_defenses/mnist_defense_nad.py View File

@@ -64,17 +64,10 @@ def test_nad_method():

# 3. get accuracy of test data on original model
net.set_train(False)
acc_list = []
batchs = inputs.shape[0] // batch_size
for i in range(batchs):
batch_inputs = inputs[i*batch_size : (i + 1)*batch_size]
batch_labels = labels[i*batch_size : (i + 1)*batch_size]
logits = net(Tensor(batch_inputs)).asnumpy()
label_pred = np.argmax(logits, axis=1)
acc_list.append(np.mean(batch_labels == label_pred))

LOGGER.info(TAG, 'accuracy of TEST data on original model is : %s',
np.mean(acc_list))
logits = net(Tensor(inputs)).asnumpy()
label_pred = np.argmax(logits, axis=1)
acc = np.mean(labels == label_pred)
LOGGER.info(TAG, 'accuracy of TEST data on original model is : %s', acc)

# 4. get adv of test data
attack = FastGradientSignMethod(net, eps=0.3, loss_fn=loss)
@@ -82,17 +75,11 @@ def test_nad_method():
LOGGER.info(TAG, 'adv_data.shape is : %s', adv_data.shape)

# 5. get accuracy of adv data on original model
acc_list = []
batchs = adv_data.shape[0] // batch_size
for i in range(batchs):
batch_inputs = adv_data[i*batch_size : (i + 1)*batch_size]
batch_labels = labels[i*batch_size : (i + 1)*batch_size]
logits = net(Tensor(batch_inputs)).asnumpy()
label_pred = np.argmax(logits, axis=1)
acc_list.append(np.mean(batch_labels == label_pred))

LOGGER.info(TAG, 'accuracy of adv data on original model is : %s',
np.mean(acc_list))
net.set_train(False)
logits = net(Tensor(adv_data)).asnumpy()
label_pred = np.argmax(logits, axis=1)
acc = np.mean(labels == label_pred)
LOGGER.info(TAG, 'accuracy of adv data on original model is : %s', acc)

# 6. defense
ds_train = generate_mnist_dataset(os.path.join(mnist_path, "train"),
@@ -111,30 +98,16 @@ def test_nad_method():

# 7. get accuracy of test data on defensed model
net.set_train(False)
acc_list = []
batchs = inputs.shape[0] // batch_size
for i in range(batchs):
batch_inputs = inputs[i*batch_size : (i + 1)*batch_size]
batch_labels = labels[i*batch_size : (i + 1)*batch_size]
logits = net(Tensor(batch_inputs)).asnumpy()
label_pred = np.argmax(logits, axis=1)
acc_list.append(np.mean(batch_labels == label_pred))

LOGGER.info(TAG, 'accuracy of TEST data on defensed model is : %s',
np.mean(acc_list))
logits = net(Tensor(inputs)).asnumpy()
label_pred = np.argmax(logits, axis=1)
acc = np.mean(labels == label_pred)
LOGGER.info(TAG, 'accuracy of TEST data on defensed model is : %s', acc)

# 8. get accuracy of adv data on defensed model
acc_list = []
batchs = adv_data.shape[0] // batch_size
for i in range(batchs):
batch_inputs = adv_data[i*batch_size : (i + 1)*batch_size]
batch_labels = labels[i*batch_size : (i + 1)*batch_size]
logits = net(Tensor(batch_inputs)).asnumpy()
label_pred = np.argmax(logits, axis=1)
acc_list.append(np.mean(batch_labels == label_pred))

LOGGER.info(TAG, 'accuracy of adv data on defensed model is : %s',
np.mean(acc_list))
logits = net(Tensor(adv_data)).asnumpy()
label_pred = np.argmax(logits, axis=1)
acc = np.mean(labels == label_pred)
LOGGER.info(TAG, 'accuracy of adv data on defensed model is : %s', acc)


if __name__ == '__main__':


Loading…
Cancel
Save