class_docstr: Generic class for attacker steps, under perturbation constraints
  specified by an "origin input" and a perturbation magnitude.
  Must implement project, step, and random_perturb
class_docstr_tok: ["Generic","class","for","attacker","steps",",","under","perturbation","constraints","specified","by","an","``","origin","input","''","and","a","perturbation","magnitude",".","Must","implement","project",",","step",",","and","random_perturb"]
docstr: Initialize the attacker step with a given perturbation magnitude.
  
  Args:
      eps (float): the perturbation magnitude
      orig_input (ch.tensor): the original input
docstr_tok: ["Initialize","the","attacker","step","with","a","given","perturbation","magnitude",".","Args",":","eps","(","float",")",":","the","perturbation","magnitude","orig_input","(","ch.tensor",")",":","the","original","input"]
code: def __init__(self, orig_input, eps, step_size, use_grad=True):
      """
      Initialize the attacker step with a given perturbation magnitude.
  
      Args:
          eps (float): the perturbation magnitude
          orig_input (ch.tensor): the original input
      """
      self.orig_input = orig_input
      self.eps = eps
      self.step_size = step_size
      self.use_grad = use_grad
  
imports: import torch
label_desc: Use image node_id 1 to create a new AttackerStep object  with example: obj = AttackerStep(orig_input, eps, step_size, use_grad)