art.defences.postprocessor
¶
Module implementing postprocessing defences against adversarial attacks.
Base Class Postprocessor¶
-
class
art.defences.postprocessor.
Postprocessor
(is_fitted: bool = False, apply_fit: bool = True, apply_predict: bool = True)¶ Abstract base class for postprocessing defences. Postprocessing defences are not included in the loss function evaluation for loss gradients or the calculation of class gradients.
-
abstract
__call__
(preds: numpy.ndarray) → numpy.ndarray¶ Perform model postprocessing and return postprocessed output.
- Return type
ndarray
- Parameters
preds (
ndarray
) – model output to be postprocessed.- Returns
Postprocessed model output.
-
__init__
(is_fitted: bool = False, apply_fit: bool = True, apply_predict: bool = True) → None¶ Create a postprocessing object.
Optionally, set attributes.
-
property
apply_fit
¶ Property of the defence indicating if it should be applied at training time.
- Returns
True if the defence should be applied when fitting a model, False otherwise.
-
property
apply_predict
¶ Property of the defence indicating if it should be applied at test time.
- Returns
True if the defence should be applied at prediction time, False otherwise.
-
fit
(preds: numpy.ndarray, **kwargs) → None¶ Fit the parameters of the postprocessor if it has any.
- Parameters
preds (
ndarray
) – Training set to fit the postprocessor.kwargs – Other parameters.
-
property
is_fitted
¶ Return the state of the postprocessing object.
- Returns
True if the postprocessing model has been fitted (if this applies).
-
set_params
(**kwargs) → None¶ Take in a dictionary of parameters and apply checks before saving them as attributes.
-
abstract
Class Labels¶
-
class
art.defences.postprocessor.
ClassLabels
(apply_fit: bool = False, apply_predict: bool = True)¶ Implementation of a postprocessor based on adding class labels to classifier output.
-
__call__
(preds: numpy.ndarray) → numpy.ndarray¶ Perform model postprocessing and return postprocessed output.
- Return type
ndarray
- Parameters
preds (
ndarray
) – model output to be postprocessed.- Returns
Postprocessed model output.
-
__init__
(apply_fit: bool = False, apply_predict: bool = True) → None¶ Create a ClassLabels postprocessor.
- Parameters
apply_fit (
bool
) – True if applied during fitting/training.apply_predict (
bool
) – True if applied during predicting.
-
Gaussian Noise¶
-
class
art.defences.postprocessor.
GaussianNoise
(scale: float = 0.2, apply_fit: bool = False, apply_predict: bool = True)¶ Implementation of a postprocessor based on adding Gaussian noise to classifier output.
-
__call__
(preds: numpy.ndarray) → numpy.ndarray¶ Perform model postprocessing and return postprocessed output.
- Return type
ndarray
- Parameters
preds (
ndarray
) – model output to be postprocessed.- Returns
Postprocessed model output.
-
__init__
(scale: float = 0.2, apply_fit: bool = False, apply_predict: bool = True) → None¶ Create a GaussianNoise postprocessor.
- Parameters
scale (
float
) – Standard deviation of the distribution.apply_fit (
bool
) – True if applied during fitting/training.apply_predict (
bool
) – True if applied during predicting.
-
High Confidence¶
-
class
art.defences.postprocessor.
HighConfidence
(cutoff: float = 0.25, apply_fit: bool = False, apply_predict: bool = True)¶ Implementation of a postprocessor based on selecting high confidence predictions to return as classifier output.
-
__call__
(preds: numpy.ndarray) → numpy.ndarray¶ Perform model postprocessing and return postprocessed output.
- Return type
ndarray
- Parameters
preds (
ndarray
) – model output to be postprocessed.- Returns
Postprocessed model output.
-
__init__
(cutoff: float = 0.25, apply_fit: bool = False, apply_predict: bool = True) → None¶ Create a HighConfidence postprocessor.
- Parameters
cutoff (
float
) – Minimal value for returned prediction output.apply_fit (
bool
) – True if applied during fitting/training.apply_predict (
bool
) – True if applied during predicting.
-
Reverse Sigmoid¶
-
class
art.defences.postprocessor.
ReverseSigmoid
(beta: float = 1.0, gamma: float = 0.1, apply_fit: bool = False, apply_predict: bool = True)¶ Implementation of a postprocessor based on adding the Reverse Sigmoid perturbation to classifier output.
-
__call__
(preds: numpy.ndarray) → numpy.ndarray¶ Perform model postprocessing and return postprocessed output.
- Return type
ndarray
- Parameters
preds (
ndarray
) – model output to be postprocessed.- Returns
Postprocessed model output.
-
__init__
(beta: float = 1.0, gamma: float = 0.1, apply_fit: bool = False, apply_predict: bool = True) → None¶ Create a ReverseSigmoid postprocessor.
- Parameters
beta (
float
) – A positive magnitude parameter.gamma (
float
) – A positive dataset and model specific convergence parameter.apply_fit (
bool
) – True if applied during fitting/training.apply_predict (
bool
) – True if applied during predicting.
-
Rounded¶
-
class
art.defences.postprocessor.
Rounded
(decimals: int = 3, apply_fit: bool = False, apply_predict: bool = True)¶ Implementation of a postprocessor based on rounding classifier output.
-
__call__
(preds: numpy.ndarray) → numpy.ndarray¶ Perform model postprocessing and return postprocessed output.
- Return type
ndarray
- Parameters
preds (
ndarray
) – model output to be postprocessed.- Returns
Postprocessed model output.
-
__init__
(decimals: int = 3, apply_fit: bool = False, apply_predict: bool = True) → None¶ Create a Rounded postprocessor.
- Parameters
decimals (
int
) – Number of decimal places after the decimal point.apply_fit (
bool
) – True if applied during fitting/training.apply_predict (
bool
) – True if applied during predicting.
-