class_docstr: | `alias`: ``parl.Agent``
  | `alias`: ``parl.core.paddle.agent.Agent``
  
  | Agent is one of the three basic classes of PARL.
  
  | It is responsible for interacting with the environment and collecting 
  data for training the policy.
  | To implement a customized ``Agent``, users can:
  
    .. code-block:: python
  
      import parl
  
      class MyAgent(parl.Agent):
          def __init__(self, algorithm, act_dim):
              super(MyAgent, self).__init__(algorithm)
              self.act_dim = act_dim
  
  Attributes:
      alg (parl.algorithm): algorithm of this agent.
  
  Public Functions:
      - ``sample``: return a noisy action to perform exploration according to the policy.
      - ``predict``: return an action given current observation.
      - ``learn``: update the parameters of self.alg using the `learn_program` defined in `build_program()`.
      - ``save``: save parameters of the ``agent`` to a given path.
      - ``restore``: restore previous saved parameters from a given path.
      - ``train``: set the agent in training mode.
      - ``eval``: set the agent in evaluation mode.
  
  Todo:
      - allow users to get parameters of a specified model by specifying the model's name in ``get_weights()``.
docstr: Save parameters.
  
  Args:
      save_path(str): where to save the parameters.
      model(parl.Model): model that describes the neural network structure. If None, will use self.alg.model.
  
  Example:
  
  .. code-block:: python
  
      agent = AtariAgent()
      agent.save('./model_dir')
docstr_tok: ["Save","parameters",".","Args",":","save_path","(","str",")",":","where","to","save","the","parameters",".","model","(","parl.Model",")",":","model","that","describes","the","neural","network","structure",".","If","None",",","will","use","self.alg.model",".","Example",":","..","code-block",":",":","python","agent","=","AtariAgent","(",")","agent.save","(","'.\/model_dir","'",")"]
code: def save(self, save_path, model=None):
      """Save parameters.
  
      Args:
          save_path(str): where to save the parameters.
          model(parl.Model): model that describes the neural network structure. If None, will use self.alg.model.
  
      Example:
  
      .. code-block:: python
  
          agent = AtariAgent()
          agent.save('./model_dir')
  
      """
      if model is None:
          model = self.alg.model
      paddle.save(model.state_dict(), save_path)
  
file_path: PARL/parl/core/paddle/agent.py
imports: import os
  import paddle
  from paddle.static import InputSpec
  from parl.core.agent_base import AgentBase
  from parl.core.paddle.algorithm import Algorithm
label_desc: Use image node_id 5 for calling the Agent obj's underlying member method code with example usage: obj.save(save_path, model) without return types