class_docstr: HBMP model.
  
  Examples:
      >>> model = HBMP()
      >>> model.guess_and_fill_missing_params(verbose=0)
      >>> model.params['embedding_input_dim'] = 200
      >>> model.params['embedding_output_dim'] = 100
      >>> model.params['embedding_trainable'] = True
      >>> model.params['alpha'] = 0.1
      >>> model.params['mlp_num_layers'] = 3
      >>> model.params['mlp_num_units'] = [10, 10]
      >>> model.params['lstm_num_units'] = 5
      >>> model.params['dropout_rate'] = 0.1
      >>> model.build()
docstr: Stack three BiLSTM MaxPooling blocks as a hierarchical structure.
  Concatenate the output of three blocs as the input sentence embedding.
  Each BiLSTM layer reads the input sentence as the input.
  Each BiLSTM layer except the first one is initialized(the initial
  hidden state and the cell state) with the final state of the previous
  layer.
code: def _sentence_encoder(
      self, input_: typing.Any, lstm_num_units: int, drop_rate: float
  ) -> typing.Any:
      """
      Stack three BiLSTM MaxPooling blocks as a hierarchical structure.
      Concatenate the output of three blocs as the input sentence embedding.
      Each BiLSTM layer reads the input sentence as the input.
      Each BiLSTM layer except the first one is initialized(the initial
      hidden state and the cell state) with the final state of the previous
      layer.
      """
      emb1 = keras.layers.Bidirectional(
          keras.layers.LSTM(
              units=lstm_num_units,
              return_sequences=True,
              return_state=True,
              dropout=drop_rate,
              recurrent_dropout=drop_rate,
          ),
          merge_mode="concat",
      )(input_)
      emb1_maxpooling = keras.layers.GlobalMaxPooling1D()(emb1[0])
  
      emb2 = keras.layers.Bidirectional(
          keras.layers.LSTM(
              units=lstm_num_units,
              return_sequences=True,
              return_state=True,
              dropout=drop_rate,
              recurrent_dropout=drop_rate,
          ),
          merge_mode="concat",
      )(input_, initial_state=emb1[1:5])
      emb2_maxpooling = keras.layers.GlobalMaxPooling1D()(emb2[0])
  
      emb3 = keras.layers.Bidirectional(
          keras.layers.LSTM(
              units=lstm_num_units,
              return_sequences=True,
              return_state=True,
              dropout=drop_rate,
              recurrent_dropout=drop_rate,
          ),
          merge_mode="concat",
      )(input_, initial_state=emb2[1:5])
      emb3_maxpooling = keras.layers.GlobalMaxPooling1D()(emb3[0])
  
      emb = keras.layers.Concatenate(axis=1)(
          [emb1_maxpooling, emb2_maxpooling, emb3_maxpooling]
      )
  
      return emb
  
file_path: MatchZoo/matchzoo/contrib/models/hbmp.py
imports: import keras
  import typing
  from matchzoo.engine import hyper_spaces
  from matchzoo.engine.param_table import ParamTable
  from matchzoo.engine.param import Param
  from matchzoo.engine.base_model import BaseModel
label_desc: Use image node_id 4 for calling the HBMP obj's underlying member method code with example usage: obj._sentence_encoder(input_, lstm_num_units, drop_rate) and returns: emb