Source code for cleverhans.attacks.semantic
"""Semantic adversarial examples
"""
from cleverhans.attacks.attack import Attack
[docs]class Semantic(Attack):
"""
Semantic adversarial examples
https://arxiv.org/abs/1703.06857
Note: data must either be centered (so that the negative image can be
made by simple negation) or must be in the interval [-1, 1]
:param model: cleverhans.model.Model
:param center: bool
If True, assumes data has 0 mean so the negative image is just negation.
If False, assumes data is in the interval [0, max_val]
:param max_val: float
Maximum value allowed in the input data
:param sess: optional tf.Session
:param dtypestr: dtype of data
:param kwargs: passed through to the super constructor
"""
def __init__(self, model, center, max_val=1., sess=None, dtypestr='float32',
**kwargs):
super(Semantic, self).__init__(model, sess, dtypestr, **kwargs)
self.center = center
self.max_val = max_val
if hasattr(model, 'dataset_factory'):
if 'center' in model.dataset_factory.kwargs:
assert center == model.dataset_factory.kwargs['center']
[docs] def generate(self, x, **kwargs):
if self.center:
return -x
return self.max_val - x