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