import numpy as np def noise(x, eps=0.3, order=np.inf, clip_min=None, clip_max=None): """ A weak attack that just picks a random point in the attacker's action space. When combined with an attack bundling function, this can be used to implement random search. References: https://arxiv.org/abs/1802.00420 recommends random search to help identify gradient masking https://openreview.net/forum?id=H1g0piA9tQ recommends using noise as part of an attack building recipe combining many different optimizers to yield a strong optimizer. Arguments --------- x : torch.Tensor The input image. """ if order != np.inf: raise NotImplementedError(ord) eta = np.random.uniform(low=-eps, high=eps, size=x.shape) adv_x = x + eta return adv_x