docstr: Args:
      input_dict: input_dict (that contains a batch dimension for each value).
          Keys and shapes: {
              OBS: [batch_size, max_seq_len, obs_dim],
              ACTIONS: [batch_size, max_seq_len - 1, act_dim],
              RETURNS_TO_GO: [batch_size, max_seq_len - 1],
              REWARDS: [batch_size],
              TIMESTEPS: [batch_size, max_seq_len - 1],
          }
      explore: unused.
      timestep: unused.
  Returns:
      A tuple consisting of a) actions, b) state_out, c) extra_fetches.
docstr_tok: ["Args",":","input_dict",":","input_dict","(","that","contains","a","batch","dimension","for","each","value",")",".","Keys","and","shapes",":","{","OBS",":","[","batch_size",",","max_seq_len",",","obs_dim","]",",","ACTIONS",":","[","batch_size",",","max_seq_len","-","1",",","act_dim","]",",","RETURNS_TO_GO",":","[","batch_size",",","max_seq_len","-","1","]",",","REWARDS",":","[","batch_size","]",",","TIMESTEPS",":","[","batch_size",",","max_seq_len","-","1","]",",","}","explore",":","unused",".","timestep",":","unused",".","Returns",":","A","tuple","consisting","of","a",")","actions",",","b",")","state_out",",","c",")","extra_fetches","."]
code: def compute_actions_from_input_dict(
      self,
      input_dict: Union[SampleBatch, Dict[str, TensorStructType]],
      explore: bool = None,
      timestep: Optional[int] = None,
      **kwargs,
  ) -> Tuple[TensorType, List[TensorType], Dict[str, TensorType]]:
      """
      Args:
          input_dict: input_dict (that contains a batch dimension for each value).
              Keys and shapes: {
                  OBS: [batch_size, max_seq_len, obs_dim],
                  ACTIONS: [batch_size, max_seq_len - 1, act_dim],
                  RETURNS_TO_GO: [batch_size, max_seq_len - 1],
                  REWARDS: [batch_size],
                  TIMESTEPS: [batch_size, max_seq_len - 1],
              }
          explore: unused.
          timestep: unused.
      Returns:
          A tuple consisting of a) actions, b) state_out, c) extra_fetches.
      """
      with torch.no_grad():
          # Pass lazy (torch) tensor dict to Model as `input_dict`.
          input_dict = input_dict.copy()
          input_dict = self._lazy_tensor_dict(input_dict)
          input_dict.set_training(True)
  
          (
              actions,
              state_out,
              extra_fetches,
          ) = self._compute_action_helper(input_dict)
          return actions, state_out, extra_fetches
  
imports: from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Type, Union
  import gymnasium
  import numpy
  import tree
  from gymnasium.spaces import Box, Discrete
  from rllib_dt.dt.dt_torch_model import DTTorchModel
  from ray.rllib.models.catalog import ModelCatalog
  from ray.rllib.models.modelv2 import ModelV2
  from ray.rllib.models.torch.mingpt import configure_gpt_optimizer
  from ray.rllib.models.torch.torch_action_dist import TorchCategorical, TorchDeterministic, TorchDistributionWrapper
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.policy.torch_mixins import LearningRateSchedule
  from ray.rllib.policy.torch_policy_v2 import TorchPolicyV2
  from ray.rllib.utils.annotations import DeveloperAPI, PublicAPI, override
  from ray.rllib.utils.framework import try_import_torch
  from ray.rllib.utils.numpy import convert_to_numpy
  from ray.rllib.utils.threading import with_lock
  from ray.rllib.utils.torch_utils import apply_grad_clipping
  from ray.rllib.utils.typing import TensorShape, TensorStructType, TensorType, TrainerConfigDict
label_desc: Use image node_id 9 for calling the DTTorchPolicy obj's underlying member method code with example usage: obj.compute_actions_from_input_dict(input_dict, explore, timestep) and returns: actions,  state_out,  extra_fetches