Skip to content

Commit

Permalink
refactor: reorder model, normalize, device params
Browse files Browse the repository at this point in the history
  • Loading branch information
spencerwooo committed Jan 20, 2024
1 parent 3a85a1e commit a4ba556
Show file tree
Hide file tree
Showing 14 changed files with 38 additions and 38 deletions.
6 changes: 3 additions & 3 deletions src/torchattack/admix.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ def __init__(
self,
model: nn.Module,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None = None,
eps: float = 8 / 255,
steps: int = 10,
alpha: float | None = None,
Expand All @@ -27,13 +28,13 @@ def __init__(
clip_min: float = 0.0,
clip_max: float = 1.0,
targeted: bool = False,
device: torch.device | None = None,
) -> None:
"""Initialize the Admix attack.
Args:
model: The model to attack.
normalize: A transform to normalize images.
device: Device to use for tensors. Defaults to cuda if available.
eps: The maximum perturbation. Defaults to 8/255.
steps: Number of steps. Defaults to 10.
alpha: Step size, `eps / steps` if None. Defaults to None.
Expand All @@ -44,10 +45,9 @@ def __init__(
clip_min: Minimum value for clipping. Defaults to 0.0.
clip_max: Maximum value for clipping. Defaults to 1.0.
targeted: Targeted attack if True. Defaults to False.
device: Device to use for tensors. Defaults to cuda if available.
"""

super().__init__(device, normalize)
super().__init__(normalize, device)

self.model = model
self.eps = eps
Expand Down
2 changes: 1 addition & 1 deletion src/torchattack/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ class Attack(ABC):

def __init__(
self,
device: torch.device | None,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None,
) -> None:
super().__init__()

Expand Down
6 changes: 3 additions & 3 deletions src/torchattack/deepfool.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,27 +17,27 @@ def __init__(
self,
model: nn.Module,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None = None,
steps: int = 100,
overshoot: float = 0.02,
num_classes: int = 10,
clip_min: float = 0.0,
clip_max: float = 1.0,
device: torch.device | None = None,
) -> None:
"""Initialize the DeepFool attack.
Args:
model: The model to attack.
normalize: A transform to normalize images.
device: Device to use for tensors. Defaults to cuda if available.
steps: Number of steps. Defaults to 100.
overshoot: Overshoot parameter for noise control. Defaults to 0.02.
num_classes: Number of classes to consider. Defaults to 10.
clip_min: Minimum value for clipping. Defaults to 0.0.
clip_max: Maximum value for clipping. Defaults to 1.0.
device: Device to use for tensors. Defaults to cuda if available.
"""

super().__init__(device, normalize)
super().__init__(normalize, device)

self.model = model
self.steps = steps
Expand Down
6 changes: 3 additions & 3 deletions src/torchattack/difgsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def __init__(
self,
model: nn.Module,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None = None,
eps: float = 8 / 255,
steps: int = 10,
alpha: float | None = None,
Expand All @@ -27,7 +28,6 @@ def __init__(
clip_min: float = 0.0,
clip_max: float = 1.0,
targeted: bool = False,
device: torch.device | None = None,
) -> None:
"""Initialize the DI-FGSM attack.
Expand All @@ -40,6 +40,7 @@ def __init__(
Args:
model: The model to attack.
normalize: A transform to normalize images.
device: Device to use for tensors. Defaults to cuda if available.
eps: The maximum perturbation. Defaults to 8/255.
steps: Number of steps. Defaults to 10.
alpha: Step size, `eps / steps` if None. Defaults to None.
Expand All @@ -49,10 +50,9 @@ def __init__(
clip_min: Minimum value for clipping. Defaults to 0.0.
clip_max: Maximum value for clipping. Defaults to 1.0.
targeted: Targeted attack if True. Defaults to False.
device: Device to use for tensors. Defaults to cuda if available.
"""

super().__init__(device, normalize)
super().__init__(normalize, device)

self.model = model
self.eps = eps
Expand Down
4 changes: 2 additions & 2 deletions src/torchattack/fgsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@ def __init__(
Args:
model: A torch.nn.Module network model.
normalize: A transform to normalize images.
device: Device to use for tensors. Defaults to cuda if available.
eps: Maximum perturbation measured by Linf. Defaults to 8/255.
clip_min: Minimum value for clipping. Defaults to 0.0.
clip_max: Maximum value for clipping. Defaults to 1.0.
targeted: Targeted attack if True. Defaults to False.
device: Device to use for tensors. Defaults to cuda if available.
"""

super().__init__(device, normalize)
super().__init__(normalize, device)

self.model = model
self.eps = eps
Expand Down
4 changes: 2 additions & 2 deletions src/torchattack/geoda.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ def __init__(
self,
model: nn.Module,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None = None,
input_shape: tuple = (3, 224, 224),
epsilon: int = 5,
p: str = 'l2',
Expand All @@ -107,9 +108,8 @@ def __init__(
grad_estimator_batch_size: int = 40,
clip_min: float = 0.0,
clip_max: float = 1.0,
device: torch.device | None = None,
):
super().__init__(device, normalize)
super().__init__(normalize, device)
self.model = model

self.epsilon = epsilon
Expand Down
6 changes: 3 additions & 3 deletions src/torchattack/mifgsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,31 +17,31 @@ def __init__(
self,
model: nn.Module,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None = None,
eps: float = 8 / 255,
steps: int = 10,
alpha: float | None = None,
decay: float = 1.0,
clip_min: float = 0.0,
clip_max: float = 1.0,
targeted: bool = False,
device: torch.device | None = None,
) -> None:
"""Initialize the MI-FGSM attack.
Args:
model: The model to attack.
normalize: A transform to normalize images.
device: Device to use for tensors. Defaults to cuda if available.
eps: The maximum perturbation. Defaults to 8/255.
steps: Number of steps. Defaults to 10.
alpha: Step size, `eps / steps` if None. Defaults to None.
decay: Decay factor for the momentum term. Defaults to 1.0.
clip_min: Minimum value for clipping. Defaults to 0.0.
clip_max: Maximum value for clipping. Defaults to 1.0.
targeted: Targeted attack if True. Defaults to False.
device: Device to use for tensors. Defaults to cuda if available.
"""

super().__init__(device, normalize)
super().__init__(normalize, device)

self.model = model
self.eps = eps
Expand Down
6 changes: 3 additions & 3 deletions src/torchattack/nifgsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,31 +21,31 @@ def __init__(
self,
model: nn.Module,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None = None,
eps: float = 8 / 255,
steps: int = 10,
alpha: float | None = None,
decay: float = 1.0,
clip_min: float = 0.0,
clip_max: float = 1.0,
targeted: bool = False,
device: torch.device | None = None,
) -> None:
"""Initialize the NI-FGSM attack.
Args:
model: The model to attack.
normalize: A transform to normalize images.
device: Device to use for tensors. Defaults to cuda if available.
eps: The maximum perturbation. Defaults to 8/255.
steps: Number of steps. Defaults to 10.
alpha: Step size, `eps / steps` if None. Defaults to None.
decay: Decay factor for the momentum term. Defaults to 1.0.
clip_min: Minimum value for clipping. Defaults to 0.0.
clip_max: Maximum value for clipping. Defaults to 1.0.
targeted: Targeted attack if True. Defaults to False.
device: Device to use for tensors. Defaults to cuda if available.
"""

super().__init__(device, normalize)
super().__init__(normalize, device)

self.model = model
self.eps = eps
Expand Down
6 changes: 3 additions & 3 deletions src/torchattack/pgd.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,31 +17,31 @@ def __init__(
self,
model: nn.Module,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None = None,
eps: float = 8 / 255,
steps: int = 10,
alpha: float | None = None,
random_start: bool = True,
clip_min: float = 0.0,
clip_max: float = 1.0,
targeted: bool = False,
device: torch.device | None = None,
) -> None:
"""Initialize the PGD attack.
Args:
model: The model to attack.
normalize: A transform to normalize images.
device: Device to use for tensors. Defaults to cuda if available.
eps: The maximum perturbation. Defaults to 8/255.
steps: Number of steps. Defaults to 10.
alpha: Step size, `eps / steps` if None. Defaults to None.
random_start: Start from random uniform perturbation. Defaults to True.
clip_min: Minimum value for clipping. Defaults to 0.0.
clip_max: Maximum value for clipping. Defaults to 1.0.
targeted: Targeted attack if True. Defaults to False.
device: Device to use for tensors. Defaults to cuda if available.
"""

super().__init__(device, normalize)
super().__init__(normalize, device)

self.model = model
self.eps = eps
Expand Down
6 changes: 3 additions & 3 deletions src/torchattack/pgdl2.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,31 +19,31 @@ def __init__(
self,
model: nn.Module,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None = None,
eps: float = 1.0,
steps: int = 10,
alpha: float | None = None,
random_start: bool = True,
clip_min: float = 0.0,
clip_max: float = 1.0,
targeted: bool = False,
device: torch.device | None = None,
) -> None:
"""Initialize the PGD attack.
Args:
model: The model to attack.
normalize: A transform to normalize images.
device: Device to use for tensors. Defaults to cuda if available.
eps: The maximum perturbation, measured in L2. Defaults to 1.0.
steps: Number of steps. Defaults to 10.
alpha: Step size, `eps / steps` if None. Defaults to None.
random_start: Start from random uniform perturbation. Defaults to True.
clip_min: Minimum value for clipping. Defaults to 0.0.
clip_max: Maximum value for clipping. Defaults to 1.0.
targeted: Targeted attack if True. Defaults to False.
device: Device to use for tensors. Defaults to cuda if available.
"""

super().__init__(device, normalize)
super().__init__(normalize, device)

self.model = model
self.eps = eps
Expand Down
6 changes: 3 additions & 3 deletions src/torchattack/sinifgsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ def __init__(
self,
model: nn.Module,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None = None,
eps: float = 8 / 255,
steps: int = 10,
alpha: float | None = None,
Expand All @@ -25,13 +26,13 @@ def __init__(
clip_min: float = 0.0,
clip_max: float = 1.0,
targeted: bool = False,
device: torch.device | None = None,
) -> None:
"""Initialize the SI-NI-FGSM attack.
Args:
model: The model to attack.
normalize: A transform to normalize images.
device: Device to use for tensors. Defaults to cuda if available.
eps: The maximum perturbation. Defaults to 8/255.
steps: Number of steps. Defaults to 10.
alpha: Step size, `eps / steps` if None. Defaults to None.
Expand All @@ -40,10 +41,9 @@ def __init__(
clip_min: Minimum value for clipping. Defaults to 0.0.
clip_max: Maximum value for clipping. Defaults to 1.0.
targeted: Targeted attack if True. Defaults to False.
device: Device to use for tensors. Defaults to cuda if available.
"""

super().__init__(device, normalize)
super().__init__(normalize, device)

self.model = model
self.eps = eps
Expand Down
6 changes: 3 additions & 3 deletions src/torchattack/tifgsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ def __init__(
self,
model: nn.Module,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None = None,
eps: float = 8 / 255,
steps: int = 10,
alpha: float | None = None,
Expand All @@ -28,7 +29,6 @@ def __init__(
clip_min: float = 0.0,
clip_max: float = 1.0,
targeted: bool = False,
device: torch.device | None = None,
) -> None:
"""Initialize the TI-FGSM attack.
Expand All @@ -40,6 +40,7 @@ def __init__(
Args:
model: The model to attack.
normalize: A transform to normalize images.
device: Device to use for tensors. Defaults to cuda if available.
eps: The maximum perturbation. Defaults to 8/255.
steps: Number of steps. Defaults to 10.
alpha: Step size, `eps / steps` if None. Defaults to None.
Expand All @@ -49,10 +50,9 @@ def __init__(
clip_min: Minimum value for clipping. Defaults to 0.0.
clip_max: Maximum value for clipping. Defaults to 1.0.
targeted: Targeted attack if True. Defaults to False.
device: Device to use for tensors. Defaults to cuda if available.
"""

super().__init__(device, normalize)
super().__init__(normalize, device)

self.model = model
self.eps = eps
Expand Down
6 changes: 3 additions & 3 deletions src/torchattack/vmifgsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def __init__(
self,
model: nn.Module,
normalize: Callable[[torch.Tensor], torch.Tensor] | None,
device: torch.device | None = None,
eps: float = 8 / 255,
steps: int = 10,
alpha: float | None = None,
Expand All @@ -27,7 +28,6 @@ def __init__(
clip_min: float = 0.0,
clip_max: float = 1.0,
targeted: bool = False,
device: torch.device | None = None,
) -> None:
"""Initialize the VMI-FGSM attack.
Expand All @@ -39,6 +39,7 @@ def __init__(
Args:
model: The model to attack.
normalize: A transform to normalize images.
device: Device to use for tensors. Defaults to cuda if available.
eps: The maximum perturbation. Defaults to 8/255.
steps: Number of steps. Defaults to 10.
alpha: Step size, `eps / steps` if None. Defaults to None.
Expand All @@ -48,10 +49,9 @@ def __init__(
clip_min: Minimum value for clipping. Defaults to 0.0.
clip_max: Maximum value for clipping. Defaults to 1.0.
targeted: Targeted attack if True. Defaults to False.
device: Device to use for tensors. Defaults to cuda if available.
"""

super().__init__(device, normalize)
super().__init__(normalize, device)

self.model = model
self.eps = eps
Expand Down
Loading

0 comments on commit a4ba556

Please sign in to comment.