Skip to content

Commit 80c9f63

Browse files
Irina NicolaeIrina Nicolae
authored andcommitted
Merge branch 'dev'
Conflicts: config/__init__.py examples/cifar_adversarial_training.py examples/cifar_feature_squeezing.py examples/mnist_cnn_fgsm.py examples/mnist_transferability.py generate_adversarial.py generate_from_imagenet.py notebooks/visual-layers.ipynb run_tests.sh src/attacks/attack.py src/attacks/carlini.py src/attacks/carlini_unittest.py src/attacks/deepfool.py src/attacks/universal_perturbation.py src/attacks/virtual_adversarial.py src/classifiers/classifier.py src/classifiers/cnn_unittest.py src/classifiers/mlp.py src/classifiers/mlp_unittest.py src/classifiers/resnet.py src/classifiers/resnet_unittest.py src/classifiers/siamese.py src/classifiers/siamese_unittest.py src/classifiers/utils.py src/layers/activations.py src/layers/activations_unittest.py src/metrics.py src/metrics_unittest.py src/utils.py train_adversarially.py train_with_noise.py
2 parents f2b2eff + e31cce6 commit 80c9f63

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+613
-205
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,7 @@ ENV/
9090

9191
# ignore local config
9292
*config.ini
93+
94+
# ignore pictures
95+
*.jpg
96+
demo/pics/*

config/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import absolute_import, division, print_function
2+
13
from os.path import abspath, dirname, expanduser, join
24
import sys
35

examples/cifar_adversarial_training.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# -*- coding: utf-8 -*-
22
"""Trains a convolutional neural network on the CIFAR-10 dataset, then generated adversarial images using the
3-
Carlini & Wagner method and retrains the network on the training set augmented with the adversarial images.
3+
DeepFool attack and retrains the network on the training set augmented with the adversarial images.
44
55
Gets to 56.80% accuracy on the adversarial samples after data augmentation over 10 epochs.
66
"""
7-
from __future__ import print_function
7+
from __future__ import absolute_import, division, print_function
8+
89
from os.path import abspath
910
import sys
1011
sys.path.append(abspath('.'))

examples/cifar_feature_squeezing.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
44
Gets to 70.04% test accuracy after 10 epochs.
55
"""
6-
from __future__ import print_function
6+
from __future__ import absolute_import, division, print_function
7+
78
from os.path import abspath
89
import sys
910
sys.path.append(abspath('.'))

examples/mnist_cnn_fgsm.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
44
With 5 epochs of training, gets to 98.89% accuracy on the test data and 65.40% on the adversarial examples.
55
"""
6-
from __future__ import print_function
6+
from __future__ import absolute_import, division, print_function
7+
78
from os.path import abspath
89
import sys
910
sys.path.append(abspath('.'))

examples/mnist_transferability.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
66
The CNN obtains 98.57% accuracy on the adversarial samples when models are fitted for 5 epochs.
77
"""
8-
from __future__ import print_function
8+
from __future__ import absolute_import, division, print_function
9+
910
from os.path import abspath
1011
import sys
1112
sys.path.append(abspath('.'))

generate_adversarial.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import absolute_import, division, print_function
2+
13
from config import config_dict
24

35
import numpy as np

requirements.txt

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,4 @@
1-
appdirs==1.4.3
2-
click==6.7
3-
cycler==0.10.0
4-
Flask==0.12.2
5-
h5py==2.7.0
6-
itsdangerous==0.24
7-
Jinja2==2.9.6
81
Keras==2.0.4
9-
MarkupSafe==1.0
102
matplotlib==2.0.1
11-
numpy==1.12.1
12-
olefile==0.44
13-
packaging==16.8
14-
picasso-viz==0.1.1
15-
Pillow==4.1.1
16-
protobuf==3.3.0
17-
pyparsing==2.2.0
18-
python-dateutil==2.6.0
19-
pytz==2017.2
20-
PyYAML==3.12
21-
requests==2.14.2
223
scipy==0.19.0
23-
six==1.10.0
244
tensorflow==1.1.0
25-
Theano==0.9.0
26-
Werkzeug==0.12.1

src/attacks/attack.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
from abc import ABCMeta
1+
from __future__ import absolute_import, division, print_function, unicode_literals
2+
3+
import abc
4+
import sys
25

36
import numpy as np
47
import tensorflow as tf
@@ -32,12 +35,17 @@ def class_derivative(preds, x, num_labels=10):
3235
"""
3336
return [tf.gradients(preds[:, i], x) for i in range(num_labels)]
3437

38+
# Ensure compatibility with Python 2 and 3 when using ABCMeta
39+
if sys.version_info >= (3, 4):
40+
ABC = abc.ABC
41+
else:
42+
ABC = abc.ABCMeta('ABC', (), {})
43+
3544

36-
class Attack:
45+
class Attack(ABC):
3746
"""
3847
Abstract base class for all attack classes. Adapted from cleverhans (https://github.com/openai/cleverhans).
3948
"""
40-
__metaclass__ = ABCMeta
4149
attack_params = ['classifier', 'session']
4250

4351
def __init__(self, classifier, sess=None):

src/attacks/carlini.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
from __future__ import absolute_import, division, print_function
2+
13
from config import config_dict
4+
25
from keras.utils.np_utils import to_categorical
36
import tensorflow as tf
47

0 commit comments

Comments
 (0)