code: def __init__(
      self,
      hidden_dim: int,
      decoder_layers: nn.ModuleList,
      num_layers: int,
      eval_idx: int = -1,
  ) -> None:
      super().__init__()
      self.layers = decoder_layers
      # TODO: come back to this later
      # self.layers = nn.ModuleList([
      #    copy.deepcopy(decoder_layer) for _ in range(num_layers)
      # ])
      self.hidden_dim = hidden_dim
      self.num_layers = num_layers
      self.eval_idx = (
          eval_idx if eval_idx >= 0 else num_layers + eval_idx
      )
  
imports: from __future__ import annotations
  from typing import Optional
  import torch
  from torch import nn
  from kornia.contrib.models.common import MLP, ConvNormAct
  from kornia.core import Module, Tensor, concatenate
label_desc: Use image node_id 1 to create a new TransformerDecoder object  with example: obj = TransformerDecoder(hidden_dim, decoder_layers, num_layers, eval_idx)