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: Restore previously saved parameters.
  This method requires a program that describes the network structure.
  The save_path argument is typically a value previously passed to ``save_params()``.
  
  Args:
      save_path(str): path where parameters were previously saved.
      model(parl.Model): model that describes the neural network structure. If None, will use self.alg.model.
  
  Raises:
      ValueError: if program is None and self.learn_program does not exist.
  
  Example:
  
  .. code-block:: python
  
      agent = AtariAgent()
      agent.save('./model_dir')
      agent.restore('./model_dir')
docstr_tok: ["Restore","previously","saved","parameters",".","This","method","requires","a","program","that","describes","the","network","structure",".","The","save_path","argument","is","typically","a","value","previously","passed","to","``","save_params","(",")","``",".","Args",":","save_path","(","str",")",":","path","where","parameters","were","previously","saved",".","model","(","parl.Model",")",":","model","that","describes","the","neural","network","structure",".","If","None",",","will","use","self.alg.model",".","Raises",":","ValueError",":","if","program","is","None","and","self.learn_program","does","not","exist",".","Example",":","..","code-block",":",":","python","agent","=","AtariAgent","(",")","agent.save","(","'.\/model_dir","'",")","agent.restore","(","'.\/model_dir","'",")"]
code: def restore(self, save_path, model=None):
      """Restore previously saved parameters.
      This method requires a program that describes the network structure.
      The save_path argument is typically a value previously passed to ``save_params()``.
  
      Args:
          save_path(str): path where parameters were previously saved.
          model(parl.Model): model that describes the neural network structure. If None, will use self.alg.model.
  
      Raises:
          ValueError: if program is None and self.learn_program does not exist.
  
      Example:
  
      .. code-block:: python
  
          agent = AtariAgent()
          agent.save('./model_dir')
          agent.restore('./model_dir')
  
      """
      if model is None:
          model = self.alg.model
      param_dict = paddle.load(save_path)
      model.set_state_dict(param_dict)
  
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 7 for calling the Agent obj's underlying member method code with example usage: obj.restore(save_path, model) without return types