class_docstr: An abstract interface for model wrappers that exposes model symbols
  needed for making an attack. This abstraction removes the dependency on
  any specific neural network package (e.g. Keras) from the core
  code of CleverHans. It can also simplify exposing the hidden features of a
  model when a specific package does not directly expose them.
class_docstr_tok: ["An","abstract","interface","for","model","wrappers","that","exposes","model","symbols","needed","for","making","an","attack",".","This","abstraction","removes","the","dependency","on","any","specific","neural","network","package","(","e.g",".","Keras",")","from","the","core","code","of","CleverHans",".","It","can","also","simplify","exposing","the","hidden","features","of","a","model","when","a","specific","package","does","not","directly","expose","them","."]
docstr: Provides access to the model's parameters.
  :return: A list of all Variables defining the model parameters.
docstr_tok: ["Provides","access","to","the","model","'s","parameters",".",":","return",":","A","list","of","all","Variables","defining","the","model","parameters","."]
code: def get_params(self):
      """
      Provides access to the model's parameters.
      :return: A list of all Variables defining the model parameters.
      """
  
      if hasattr(self, "params"):
          return list(self.params)
  
      # Catch eager execution and assert function overload.
      try:
          if tf.executing_eagerly():
              raise NotImplementedError(
                  "For Eager execution - get_params "
                  "must be overridden."
              )
      except AttributeError:
          pass
  
      # For graph-based execution
      scope_vars = tf.get_collection(
          tf.GraphKeys.TRAINABLE_VARIABLES, self.scope + "/"
      )
  
      if len(scope_vars) == 0:
          self.make_params()
          scope_vars = tf.get_collection(
              tf.GraphKeys.TRAINABLE_VARIABLES, self.scope + "/"
          )
          assert len(scope_vars) > 0
  
      # Make sure no parameters have been added or removed
      if hasattr(self, "num_params"):
          if self.num_params != len(scope_vars):
              print("Scope: ", self.scope)
              print("Expected " + str(self.num_params) + " variables")
              print("Got " + str(len(scope_vars)))
              for var in scope_vars:
                  print("\t" + str(var))
              assert False
      else:
          self.num_params = len(scope_vars)
  
      return scope_vars
  
imports: from abc import ABCMeta
  import warnings
  import tensorflow
  from cleverhans import utils_tf
label_desc: Use image node_id 7 for calling the Model obj's underlying member method code with example usage: obj.get_params() and returns: scope_vars, list