class_docstr: ESIM model.
  
  Examples:
      >>> model = ESIM()
      >>> task = classification_task = mz.tasks.Classification(num_classes=2)
      >>> model.params['task'] = task
      >>> model.params['input_shapes'] = [(20, ), (40, )]
      >>> model.params['lstm_dim'] = 300
      >>> model.params['mlp_num_units'] = 300
      >>> model.params['embedding_input_dim'] =  5000
      >>> model.params['embedding_output_dim'] =  10
      >>> model.params['embedding_trainable'] = False
      >>> model.params['mlp_num_layers'] = 0
      >>> model.params['mlp_num_fan_out'] = 300
      >>> model.params['mlp_activation_func'] = 'tanh'
      >>> model.params['mask_value'] = 0
      >>> model.params['dropout_rate'] = 0.5
      >>> model.params['optimizer'] = keras.optimizers.Adam(lr=4e-4)
      >>> model.guess_and_fill_missing_params()
      >>> model.build()
docstr: Bidirectional LSTM layer in ESIM.
  
  :param lstm_dim: int, dimension of LSTM layer
  :return: `keras.layers.Layer`.
docstr_tok: ["Bidirectional","LSTM","layer","in","ESIM",".",":","param","lstm_dim",":","int",",","dimension","of","LSTM","layer",":","return",":","`","keras.layers.Layer","`","."]
code: def _make_bilstm_layer(self, lstm_dim: int) -> keras.layers.Layer:
      """
      Bidirectional LSTM layer in ESIM.
  
      :param lstm_dim: int, dimension of LSTM layer
      :return: `keras.layers.Layer`.
      """
      return keras.layers.Bidirectional(
          layer=keras.layers.LSTM(lstm_dim, return_sequences=True),
          merge_mode="concat",
      )
  
file_path: MatchZoo/matchzoo/contrib/models/esim.py
imports: import keras
  import keras.backend
  import tensorflow
  import matchzoo
  from matchzoo.engine.base_model import BaseModel
  from matchzoo.engine.param import Param
  from matchzoo.engine.param_table import ParamTable
label_desc: Use image node_id 4 for calling the ESIM obj's underlying member method code with example usage: obj._make_bilstm_layer(lstm_dim) and returns: keras