class_docstr: A recurrent GRU encoder.
  
  This encoder has...
  - Zero or one tokenizers.
  - One or more GRU layers.
  - One linear output layer.
code: def get_initial_state(self):
      return {
          "h": torch.zeros(
              self.config.num_layers, self.config.hidden_dim
          ),
      }
  
imports: from typing import Optional
  import tree
  from ray.rllib.core.models.base import Encoder, ActorCriticEncoder, StatefulActorCriticEncoder, STATE_IN, STATE_OUT, ENCODER_OUT
  from ray.rllib.core.models.base import Model, tokenize
  from ray.rllib.core.models.configs import ActorCriticEncoderConfig, CNNEncoderConfig, MLPEncoderConfig, RecurrentEncoderConfig
  from ray.rllib.core.models.specs.specs_base import Spec
  from ray.rllib.core.models.specs.specs_base import TensorSpec
  from ray.rllib.core.models.specs.specs_dict import SpecDict
  from ray.rllib.core.models.torch.base import TorchModel
  from ray.rllib.core.models.torch.primitives import TorchMLP, TorchCNN
  from ray.rllib.models.utils import get_initializer_fn
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.utils.annotations import override
  from ray.rllib.utils.framework import try_import_torch
label_desc: Use image node_id 4 for calling the TorchGRUEncoder obj's underlying member method code with example usage: obj.get_initial_state() and returns: dict