code: def get_params(self):
      
  
      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
docs: Provides access to the model's parameters.
      :return: A list of all Variables defining the model parameters.