class_docstr: Each sub-step or actor gets its individual critic.
  Can be instantiated via the
  :class:`~maze.perception.models.critics.step_state_action_critic_composer.StepStateActionCriticComposer`.
class_docstr_tok: ["Each","sub-step","or","actor","gets","its","individual","critic",".","Can","be","instantiated","via","the",":","class",":","`","~maze.perception.models.critics.step_state_action_critic_composer.StepStateActionCriticComposer","`","."]
docstr: implementation of
  :class:`~maze.core.agent.torch_state_action_critic.TorchStateActionCritic`
docstr_tok: ["implementation","of",":","class",":","`","~maze.core.agent.torch_state_action_critic.TorchStateActionCritic","`"]
code: def num_critics(self) -> int:
      """implementation of
      :class:`~maze.core.agent.torch_state_action_critic.TorchStateActionCritic`
      """
      return self.num_policies
  
imports: import copy
  import itertools
  from abc import abstractmethod
  from typing import Mapping, Union, List, Dict
  import torch
  from gym import spaces
  from torch import nn
  from torch.distributions.utils import logits_to_probs
  from maze.core.agent.state_action_critic import StateActionCritic
  from maze.core.agent.torch_model import TorchModel
  from maze.core.annotations import override
  from maze.core.wrappers.observation_preprocessing.preprocessors.one_hot import OneHotPreProcessor
  from maze.perception.blocks.inference import InferenceBlock
  from maze.perception.perception_utils import flatten_spaces, convert_to_numpy, convert_to_torch
  from maze.perception.weight_init import make_module_init_normc
  from maze.utils.bcolors import BColors
label_desc: Use image node_id 3 for calling the TorchStepStateActionCritic obj's underlying member method code with example usage: obj.num_critics() and returns: self