code: def build_model_arc(self) -> None:
      output_dim = self.label_processor.vocab_size
  
      config = self.hyper_parameters
      embed_model = self.embedding.embed_model
  
      crf = KConditionalRandomField()
  
      layer_stack = [
          L.Bidirectional(
              L.GRU(**config["layer_bgru"]), name="layer_bgru"
          ),
          L.Dropout(**config["layer_dropout"], name="layer_dropout"),
          L.Dense(output_dim, **config["layer_time_distributed"]),
          crf,
      ]
  
      tensor = embed_model.output
      for layer in layer_stack:
          tensor = layer(tensor)
  
      self.tf_model = keras.Model(embed_model.inputs, tensor)
      self.crf_layer = crf
  
file_path: Kashgari/kashgari/tasks/labeling/bi_gru_crf_model.py
imports: from typing import Dict, Any
  from tensorflow import keras
  from kashgari.layers import L, KConditionalRandomField
  from kashgari.tasks.labeling.abc_model import ABCLabelingModel
label_desc: Use image node_id 2 for calling the BiGRU_CRF_Model obj's underlying member method code with example usage: obj.build_model_arc() without return types