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: Wrap keras.backend.expand_dims into a Lambda layer.
  
  :param inp: input tensor to expand the dimension
  :param axis: the axis of new dimension
docstr_tok: ["Wrap","keras.backend.expand_dims","into","a","Lambda","layer",".",":","param","inp",":","input","tensor","to","expand","the","dimension",":","param","axis",":","the","axis","of","new","dimension"]
code: def _expand_dim(
      self, inp: tf.Tensor, axis: int
  ) -> keras.layers.Layer:
      """
      Wrap keras.backend.expand_dims into a Lambda layer.
  
      :param inp: input tensor to expand the dimension
      :param axis: the axis of new dimension
      """
      return keras.layers.Lambda(
          lambda x: tf.expand_dims(x, axis=axis)
      )(inp)
  
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 2 for calling the ESIM obj's underlying member method code with example usage: obj._expand_dim(inp, axis) and returns: keras