class_docstr: Class which stores and runs attack.
docstr: Runs attack inside Docker.
  
  Args:
    input_dir: directory with input (dataset).
    output_dir: directory where output (adversarial images) should be written.
    epsilon: maximum allowed size of adversarial perturbation,
      should be in range [0, 255].
docstr_tok: ["Runs","attack","inside","Docker",".","Args",":","input_dir",":","directory","with","input","(","dataset",")",".","output_dir",":","directory","where","output","(","adversarial","images",")","should","be","written",".","epsilon",":","maximum","allowed","size","of","adversarial","perturbation",",","should","be","in","range","[","0",",","255","]","."]
code: def run(self, input_dir, output_dir, epsilon):
      """Runs attack inside Docker.
  
      Args:
        input_dir: directory with input (dataset).
        output_dir: directory where output (adversarial images) should be written.
        epsilon: maximum allowed size of adversarial perturbation,
          should be in range [0, 255].
      """
      print("Running attack ", self.name)
      cmd = [
          self.docker_binary(),
          "run",
          "-v",
          "{0}:/input_images".format(input_dir),
          "-v",
          "{0}:/output_images".format(output_dir),
          "-v",
          "{0}:/code".format(self.directory),
          "-w",
          "/code",
          self.container,
          "./" + self.entry_point,
          "/input_images",
          "/output_images",
          str(epsilon),
      ]
      print(" ".join(cmd))
      subprocess.call(cmd)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import argparse
  import csv
  import json
  import os
  import subprocess
  import numpy
  from PIL import Image
label_desc: Use image node_id 1 for calling the Attack obj's underlying member method code with example usage: obj.run(input_dir, output_dir, epsilon) without return types