code: def __call__(self, trajectory: Trajectory):
      action = torch.from_numpy(np.stack(trajectory.action).squeeze())
      if self.num_actions is not None:
          action = F.one_hot(action, self.num_actions).float()
          assert len(action.shape) == 2, f"{action.shape}"
          # one hot makes shape (batch_size, num_actions)
      state = (
          self._get_recsim_state(trajectory.observation)
          if self.recsim_obs
          else rlt.FeatureData(
              torch.from_numpy(np.stack(trajectory.observation)).float()
          )
      )
      return rlt.PolicyGradientInput(
          state=state,
          action=action,
          reward=torch.tensor(trajectory.reward),
          log_prob=torch.tensor(trajectory.log_prob),
      )
  
imports: import inspect
  import logging
  from typing import Dict, Optional
  import gym
  import numpy
  import reagent.core.types
  import torch
  import torch.nn.functional
  from reagent.core.parameters import CONTINUOUS_TRAINING_ACTION_RANGE
  from reagent.gym.types import Trajectory
  from reagent.preprocessing.types import InputColumn
  from reagent.training.reagent_lightning_module import ReAgentLightningModule
  from reagent.training.utils import rescale_actions
label_desc: Use image node_id 4 for calling the PolicyGradientInputMaker obj's underlying member method code with example usage: obj.__call__(trajectory) and returns: rlt