diff --git a/examples/model_security/model_defenses/mnist_defense_nad.py b/examples/model_security/model_defenses/mnist_defense_nad.py index 3711c37..fa49569 100644 --- a/examples/model_security/model_defenses/mnist_defense_nad.py +++ b/examples/model_security/model_defenses/mnist_defense_nad.py @@ -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__':