def is_adversarial(perturbed: ep.Tensor, logits: ep.Tensor) -> ep.Tensor: if change_classes_logits != 0: logits += ep.onehot_like(logits, classes, value=change_classes_logits) return criterion_(perturbed, logits)
def test_onehot_like_raises(dummy: Tensor) -> None: t = ep.arange(dummy, 18).float32().reshape((6, 3)) indices = ep.arange(t, 6) // 2 ep.onehot_like(t, indices) t = ep.arange(dummy, 90).float32().reshape((6, 3, 5)) indices = ep.arange(t, 6) // 2 with pytest.raises(ValueError): ep.onehot_like(t, indices) t = ep.arange(dummy, 18).float32().reshape((6, 3)) indices = ep.arange(t, 6).reshape((6, 1)) // 2 with pytest.raises(ValueError): ep.onehot_like(t, indices) t = ep.arange(dummy, 18).float32().reshape((6, 3)) indices = ep.arange(t, 5) // 2 with pytest.raises(ValueError): ep.onehot_like(t, indices)
def best_other_classes(logits, exclude): other_logits = logits - ep.onehot_like(logits, exclude, value=np.inf) return other_logits.argmax(axis=-1)
def targeted_is_adv(logits: ep.Tensor, target_classes: ep.Tensor, confidence) -> ep.Tensor: logits = logits - ep.onehot_like(logits, target_classes, value=confidence) classes = logits.argmax(axis=-1) return classes == target_classes
def untargeted_is_adv(logits: ep.Tensor, labels: ep.Tensor, confidence) -> ep.Tensor: logits = logits + ep.onehot_like(logits, labels, value=confidence) classes = logits.argmax(axis=-1) return classes != labels
def test_onehot_like(dummy: Tensor, value: float) -> Tensor: t = ep.arange(dummy, 18).float32().reshape((6, 3)) indices = ep.arange(t, 6) // 2 return ep.onehot_like(t, indices, value=value)
def best_other_classes(logits: ep.Tensor, exclude: ep.Tensor) -> ep.Tensor: other_logits = logits - ep.onehot_like(logits, exclude, value=ep.inf) return other_logits.argmax(axis=-1)