code: def _build_network(self):
      self.transformer_blocks = OrderedDict()
      for i in range(self.hparams.num_attn_blocks):
          self.transformer_blocks[
              f"mha_block_{i}"
          ] = TransformerEncoderBlock(
              input_embed_dim=self.hparams.input_embed_dim,
              num_heads=self.hparams.num_heads,
              ff_hidden_multiplier=self.hparams.ff_hidden_multiplier,
              ff_activation=self.hparams.transformer_activation,
              attn_dropout=self.hparams.attn_dropout,
              ff_dropout=self.hparams.ff_dropout,
              add_norm_dropout=self.hparams.add_norm_dropout,
              keep_attn=False,  # No easy way to convert TabTransformer Attn Weights to Feature Importance
          )
      self.transformer_blocks = nn.Sequential(self.transformer_blocks)
      self.attention_weights = [None] * self.hparams.num_attn_blocks
      if self.hparams.batch_norm_continuous_input:
          self.normalizing_batch_norm = BatchNorm1d(
              self.hparams.continuous_dim,
              self.hparams.virtual_batch_size,
          )
  
      self.output_dim = (
          self.hparams.input_embed_dim * self.hparams.categorical_dim
          + self.hparams.continuous_dim
      )
  
imports: from collections import OrderedDict
  from typing import Dict
  import torch
  import torch.nn
  from einops import rearrange
  from omegaconf import DictConfig
  from pytorch_tabular.models.common.layers.batch_norm import BatchNorm1d
  from ..base_model import BaseModel
  from ..common.layers import Embedding2dLayer, TransformerEncoderBlock
label_desc: Use image node_id 2 for calling the TabTransformerBackbone obj's underlying member method code with example usage: obj._build_network() without return types