class_docstr: First sub step gets a regular critic, subsequent sub-steps predict a delta w.r.t. to the previous critic.
  Can be instantiated via the
  :class:`~maze.perception.models.critics.delta_state_critic_composer.DeltaStateCriticComposer`.
class_docstr_tok: ["First","sub","step","gets","a","regular","critic",",","subsequent","sub-steps","predict","a","delta","w.r.t",".","to","the","previous","critic",".","Can","be","instantiated","via","the",":","class",":","`","~maze.perception.models.critics.delta_state_critic_composer.DeltaStateCriticComposer","`","."]
docstr: implementation of :class:`~maze.core.agent.torch_state_critic.TorchStateCritic`
          
docstr_tok: ["implementation","of",":","class",":","`","~maze.core.agent.torch_state_critic.TorchStateCritic","`"]
code: def num_critics(self) -> int:
      """implementation of :class:`~maze.core.agent.torch_state_critic.TorchStateCritic`"""
      return self._num_critics
  
imports: from abc import abstractmethod
  from typing import Mapping, Union, List, Dict
  import torch
  from gym import spaces
  from torch import nn
  from maze.core.agent.state_critic import StateCritic
  from maze.core.agent.state_critic_input_output import StateCriticStepOutput, StateCriticOutput, StateCriticInput
  from maze.core.agent.torch_model import TorchModel
  from maze.core.annotations import override
  from maze.core.env.observation_conversion import ObservationType
  from maze.core.env.structured_env import StepKeyType
  from maze.perception.perception_utils import convert_to_torch, flatten_spaces, stack_and_flatten_spaces
label_desc: Use image node_id 3 for calling the TorchDeltaStateCritic obj's underlying member method code with example usage: obj.num_critics() and returns: self