|
|
@@ -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__': |
|
|
|