Skip to content

Commit 58736af

Browse files
author
Beat Buesser
committed
Update imports
Signed-off-by: Beat Buesser <[email protected]>
1 parent 31ecfba commit 58736af

File tree

12 files changed

+38
-33
lines changed

12 files changed

+38
-33
lines changed

art/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import logging.config
55

66
# Project Imports
7-
# from art import attacks
7+
from art import attacks
88
from art import defences
9-
# from art import estimators
10-
# from art import metrics
11-
# from art import wrappers
9+
from art import estimators
10+
from art import metrics
11+
from art import wrappers
1212

1313
# Semantic Version
1414
__version__ = "1.4.0"

art/attacks/evasion/auto_projected_gradient_descent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from tqdm.auto import trange
2929

3030
from art.config import ART_NUMPY_DTYPE
31-
from art.attacks import EvasionAttack
31+
from art.attacks.attack import EvasionAttack
3232
from art.estimators.estimator import BaseEstimator, LossGradientsMixin
3333
from art.estimators.classification.classifier import ClassifierMixin
3434
from art.utils import check_and_transform_label_format, projection, random_sphere, is_probability, get_labels_np_array

art/attacks/inference/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
"""
22
Module providing inference attacks.
33
"""
4+
from art.attacks.inference import attribute_inference
5+
from art.attacks.inference import membership_inference
6+
from art.attacks.inference import model_inversion

art/defences/detector/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
22
Module implementing detector-based defences against adversarial attacks.
33
"""
4-
from art.defences.transformer import evasion
5-
from art.defences.transformer import poisoning
4+
from art.defences.detector import evasion
5+
from art.defences.detector import poisoning
Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
"""
22
Module implementing detector-based defences against evasion attacks.
33
"""
4-
from art.defences.detector.evasion.detector import (
5-
BinaryInputDetector,
6-
BinaryActivationDetector,
7-
)
8-
from art.defences.detector.evasion.subsetscanning.scanningops import ScanningOps
9-
from art.defences.detector.evasion.subsetscanning.scanner import Scanner
10-
from art.defences.detector.evasion.subsetscanning.detector import SubsetScanningDetector
4+
from art.defences.detector.evasion import subsetscanning
5+
6+
from art.defences.detector.evasion.detector import BinaryInputDetector, BinaryActivationDetector

art/defences/detector/evasion/detector.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,25 @@
2626

2727
import numpy as np
2828

29-
from art.estimators.classification.classifier import ClassifierNeuralNetwork
29+
from art.estimators.estimator import BaseEstimator, NeuralNetworkMixin, LossGradientsMixin
30+
from art.estimators.classification.classifier import ClassifierMixin, ClassGradientsMixin
3031
from art.utils import deprecated
3132

3233
if TYPE_CHECKING:
3334
from art.utils import CLIP_VALUES_TYPE
3435
from art.data_generators import DataGenerator
36+
from art.estimators.classification.classifier import ClassifierNeuralNetwork
3537

3638
logger = logging.getLogger(__name__)
3739

3840

39-
class BinaryInputDetector(ClassifierNeuralNetwork):
41+
class BinaryInputDetector(ClassGradientsMixin, ClassifierMixin, LossGradientsMixin, NeuralNetworkMixin, BaseEstimator):
4042
"""
4143
Binary detector of adversarial samples coming from evasion attacks. The detector uses an architecture provided by
4244
the user and trains it on data labeled as clean (label 0) or adversarial (label 1).
4345
"""
4446

45-
def __init__(self, detector: ClassifierNeuralNetwork) -> None:
47+
def __init__(self, detector: "ClassifierNeuralNetwork") -> None:
4648
"""
4749
Create a `BinaryInputDetector` instance which performs binary classification on input data.
4850
@@ -155,14 +157,14 @@ def save(self, filename: str, path: Optional[str] = None) -> None:
155157
self.detector.save(filename, path)
156158

157159

158-
class BinaryActivationDetector(ClassifierNeuralNetwork):
160+
class BinaryActivationDetector(ClassGradientsMixin, ClassifierMixin, LossGradientsMixin, NeuralNetworkMixin, BaseEstimator):
159161
"""
160162
Binary detector of adversarial samples coming from evasion attacks. The detector uses an architecture provided by
161163
the user and is trained on the values of the activations of a classifier at a given layer.
162164
"""
163165

164166
def __init__(
165-
self, classifier: ClassifierNeuralNetwork, detector: ClassifierNeuralNetwork, layer: Union[int, str],
167+
self, classifier: "ClassifierNeuralNetwork", detector: "ClassifierNeuralNetwork", layer: Union[int, str],
166168
) -> None: # lgtm [py/similar-function]
167169
"""
168170
Create a `BinaryActivationDetector` instance which performs binary classification on activation information.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
"""
22
This module implements the fast generalized subset scan based detector.
33
"""
4+
from art.defences.detector.evasion.subsetscanning.scanningops import ScanningOps
5+
from art.defences.detector.evasion.subsetscanning.scanner import Scanner
6+
from art.defences.detector.evasion.subsetscanning.detector import SubsetScanningDetector

art/estimators/estimator.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@
2525
from tqdm import trange
2626

2727
from art.config import ART_NUMPY_DTYPE
28-
from art.defences.postprocessor.postprocessor import Postprocessor
29-
from art.defences.preprocessor.preprocessor import Preprocessor
3028
from art.utils import Deprecated, deprecated, deprecated_keyword_arg
3129

3230
if TYPE_CHECKING:
3331
# pylint: disable=R0401
3432
from art.utils import CLIP_VALUES_TYPE, PREPROCESSING_TYPE
3533
from art.data_generators import DataGenerator
3634
from art.metrics.verification_decisions_trees import Tree
35+
from art.defences.postprocessor.postprocessor import Postprocessor
36+
from art.defences.preprocessor.preprocessor import Preprocessor
3737

3838

3939
class BaseEstimator(ABC):
@@ -54,8 +54,8 @@ def __init__(
5454
self,
5555
model=None,
5656
clip_values: Optional["CLIP_VALUES_TYPE"] = None,
57-
preprocessing_defences: Union[Preprocessor, List[Preprocessor], None] = None,
58-
postprocessing_defences: Union[Postprocessor, List[Postprocessor], None] = None,
57+
preprocessing_defences: Union["Preprocessor", List["Preprocessor"], None] = None,
58+
postprocessing_defences: Union["Postprocessor", List["Postprocessor"], None] = None,
5959
preprocessing: "PREPROCESSING_TYPE" = (0, 1),
6060
):
6161
"""
@@ -75,14 +75,14 @@ def __init__(
7575
self._model = model
7676
self._clip_values = clip_values
7777

78-
self.preprocessing_defences: Optional[List[Preprocessor]]
79-
if isinstance(preprocessing_defences, Preprocessor):
78+
self.preprocessing_defences: Optional[List["Preprocessor"]]
79+
if isinstance(preprocessing_defences, "Preprocessor"):
8080
self.preprocessing_defences = [preprocessing_defences]
8181
else:
8282
self.preprocessing_defences = preprocessing_defences
8383

84-
self.postprocessing_defences: Optional[List[Postprocessor]]
85-
if isinstance(postprocessing_defences, Postprocessor):
84+
self.postprocessing_defences: Optional[List["Postprocessor"]]
85+
if isinstance(postprocessing_defences, "Postprocessor"):
8686
self.postprocessing_defences = [postprocessing_defences]
8787
else:
8888
self.postprocessing_defences = postprocessing_defences
@@ -133,7 +133,7 @@ def _check_params(self) -> None:
133133

134134
if isinstance(self.preprocessing_defences, list):
135135
for preproc_defence in self.preprocessing_defences:
136-
if not isinstance(preproc_defence, Preprocessor):
136+
if not isinstance(preproc_defence, "Preprocessor"):
137137
raise ValueError(
138138
"All preprocessing defences have to be instance of "
139139
"art.defences.preprocessor.preprocessor.Preprocessor."
@@ -147,7 +147,7 @@ def _check_params(self) -> None:
147147
)
148148
if isinstance(self.postprocessing_defences, list):
149149
for postproc_defence in self.postprocessing_defences:
150-
if not isinstance(postproc_defence, Postprocessor):
150+
if not isinstance(postproc_defence, "Postprocessor"):
151151
raise ValueError(
152152
"All postprocessing defences have to be instance of "
153153
"art.defences.postprocessor.postprocessor.Postprocessor."

art/estimators/pytorch.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
LossGradientsMixin,
2929
NeuralNetworkMixin,
3030
)
31-
from art.defences.preprocessor.preprocessor import PreprocessorPyTorch
3231

3332
logger = logging.getLogger(__name__)
3433

@@ -124,6 +123,7 @@ def _apply_preprocessing_defences(self, x, y, fit: bool = False) -> Tuple[Any, A
124123
:rtype: Format as expected by the `model`
125124
"""
126125
import torch
126+
from art.defences.preprocessor.preprocessor import PreprocessorPyTorch
127127

128128
if (
129129
not hasattr(self, "preprocessing_defences")
@@ -184,6 +184,7 @@ def _apply_preprocessing_defences_gradient(self, x, gradients, fit=False):
184184
:rtype: Format as expected by the `model`
185185
"""
186186
import torch
187+
from art.defences.preprocessor.preprocessor import PreprocessorPyTorch
187188

188189
if (
189190
not hasattr(self, "preprocessing_defences")

art/estimators/tensorflow.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
LossGradientsMixin,
3030
NeuralNetworkMixin,
3131
)
32-
from art.defences.preprocessor.preprocessor import PreprocessorTensorFlowV2
3332

3433
if TYPE_CHECKING:
3534
import tensorflow as tf
@@ -170,6 +169,7 @@ def _apply_preprocessing_defences(self, x, y, fit: bool = False) -> Tuple[Any, A
170169
:rtype: Format as expected by the `model`
171170
"""
172171
import tensorflow as tf # lgtm [py/repeated-import]
172+
from art.defences.preprocessor.preprocessor import PreprocessorTensorFlowV2
173173

174174
if (
175175
not hasattr(self, "preprocessing_defences")
@@ -229,6 +229,7 @@ def _apply_preprocessing_defences_gradient(self, x, gradients, fit=False):
229229
:rtype: Format as expected by the `model`
230230
"""
231231
import tensorflow as tf # lgtm [py/repeated-import]
232+
from art.defences.preprocessor.preprocessor import PreprocessorTensorFlowV2
232233

233234
if (
234235
not hasattr(self, "preprocessing_defences")

0 commit comments

Comments
 (0)