code: def apply_blstm(
      input_tensor: tf.Tensor,
      output_name: str = "output",
      params: Optional[Dict] = None,
  ) -> tf.Tensor:
      """
      Apply BLSTM to the given input_tensor.
  
      Parameters:
          input_tensor (tf.Tensor):
              Input of the model.
          output_name (str):
              (Optional) name of the output, default to 'output'.
          params (Optional[Dict]):
              (Optional) dict of BLSTM parameters.
  
      Returns:
          tf.Tensor:
              Output tensor.
      """
      if params is None:
          params = {}
      units: int = params.get("lstm_units", 250)
      kernel_initializer = he_uniform(seed=50)
      flatten_input = TimeDistributed(Flatten())((input_tensor))
  
      def create_bidirectional():
          return Bidirectional(
              CuDNNLSTM(
                  units,
                  kernel_initializer=kernel_initializer,
                  return_sequences=True,
              )
          )
  
      l1 = create_bidirectional()((flatten_input))
      l2 = create_bidirectional()((l1))
      l3 = create_bidirectional()((l2))
      dense = TimeDistributed(
          Dense(
              int(flatten_input.shape[2]),
              activation="relu",
              kernel_initializer=kernel_initializer,
          )
      )((l3))
      output: tf.Tensor = TimeDistributed(
          Reshape(input_tensor.shape[2:]), name=output_name
      )(dense)
      return output
  
imports: from typing import Dict, Optional
  import tensorflow
  from tensorflow.compat.v1.keras.initializers import he_uniform
  from tensorflow.compat.v1.keras.layers import CuDNNLSTM
  from tensorflow.keras.layers import Bidirectional, Dense, Flatten, Reshape, TimeDistributed
  from .None import apply
label_desc: Use image node_id 1 for calling a global function with example usage: apply_blstm(input_tensor, output_name, params) and returns: output, Bidirectional