class_docstr: Extension of standard TorchModelV2 for DDPG.
  
  Data flow:
      obs -> forward() -> model_out
      model_out -> get_policy_output() -> pi(s)
      model_out, actions -> get_q_values() -> Q(s, a)
      model_out, actions -> get_twin_q_values() -> Q_twin(s, a)
  
  Note that this class by itself is not a valid model unless you
  implement forward() in a subclass.
class_docstr_tok: ["Extension","of","standard","TorchModelV2","for","DDPG",".","Data","flow",":","obs","-",">","forward","(",")","-",">","model_out","model_out","-",">","get_policy_output","(",")","-",">","pi","(","s",")","model_out",",","actions","-",">","get_q_values","(",")","-",">","Q","(","s",",","a",")","model_out",",","actions","-",">","get_twin_q_values","(",")","-",">","Q_twin","(","s",",","a",")","Note","that","this","class","by","itself","is","not","a","valid","model","unless","you","implement","forward","(",")","in","a","subclass","."]
docstr: Return the action output for the most recent forward pass.
  
  This outputs the support for pi(s). For continuous action spaces, this
  is the action directly. For discrete, is is the mean / std dev.
  
  Args:
      model_out: obs embeddings from the model layers, of shape
          [BATCH_SIZE, num_outputs].
  
  Returns:
      tensor of shape [BATCH_SIZE, action_out_size]
docstr_tok: ["Return","the","action","output","for","the","most","recent","forward","pass",".","This","outputs","the","support","for","pi","(","s",")",".","For","continuous","action","spaces",",","this","is","the","action","directly",".","For","discrete",",","is","is","the","mean","\/","std","dev",".","Args",":","model_out",":","obs","embeddings","from","the","model","layers",",","of","shape","[","BATCH_SIZE",",","num_outputs","]",".","Returns",":","tensor","of","shape","[","BATCH_SIZE",",","action_out_size","]"]
code: def get_policy_output(self, model_out: TensorType) -> TensorType:
      """Return the action output for the most recent forward pass.
  
      This outputs the support for pi(s). For continuous action spaces, this
      is the action directly. For discrete, is is the mean / std dev.
  
      Args:
          model_out: obs embeddings from the model layers, of shape
              [BATCH_SIZE, num_outputs].
  
      Returns:
          tensor of shape [BATCH_SIZE, action_out_size]
      """
      return self.policy_model(model_out)
  
file_path: ray/rllib_contrib/ddpg/src/rllib_ddpg/ddpg/ddpg_torch_model.py
imports: from typing import Dict, List, Optional, Union
  import gymnasium
  import numpy
  from ray.rllib.models.torch.misc import SlimFC
  from ray.rllib.models.torch.torch_modelv2 import TorchModelV2
  from ray.rllib.models.utils import get_activation_fn
  from ray.rllib.utils.framework import try_import_torch
  from ray.rllib.utils.typing import ModelConfigDict, TensorType
label_desc: Use image node_id 4 for calling the DDPGTorchModel obj's underlying member method code with example usage: obj.get_policy_output(model_out) and returns: self