class_docstr: A simple, q-value-from-cont-action model (for e.g. SAC type algos).
code: def get_single_q_value(self, underlying_output, action):
      # Calculate the q-value after concating the underlying output with
      # the given action.
      input_ = torch.cat([underlying_output, action], dim=-1)
      # Construct a simple input_dict (needed for self.q_head as it's an
      # RLlib ModelV2).
      input_dict = {"obs": input_}
      # Ignore state outputs.
      q_values, _ = self.q_head(input_dict)
      return q_values
  
imports: from gymnasium.spaces import Box
  from ray.rllib.models.tf.fcnet import FullyConnectedNetwork
  from ray.rllib.models.tf.tf_modelv2 import TFModelV2
  from ray.rllib.models.torch.fcnet import FullyConnectedNetwork
  from ray.rllib.models.torch.misc import SlimFC
  from ray.rllib.models.torch.torch_modelv2 import TorchModelV2
  from ray.rllib.utils.framework import try_import_tf, try_import_torch
label_desc: Use image node_id 2 for calling the TorchContActionQModel obj's underlying member method code with example usage: obj.get_single_q_value(underlying_output, action) and returns: q_values