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: Build model structure.
code: def build(self):
      """Build model structure."""
      input_left, input_right = self._make_inputs()
  
      embedding = self._make_embedding_layer()
      embed_left = embedding(input_left)
      embed_right = embedding(input_right)
  
      # Get sentence embedding
      embed_sen_left = self._sentence_encoder(
          embed_left,
          lstm_num_units=self._params["lstm_num_units"],
          drop_rate=self._params["dropout_rate"],
      )
      embed_sen_right = self._sentence_encoder(
          embed_right,
          lstm_num_units=self._params["lstm_num_units"],
          drop_rate=self._params["dropout_rate"],
      )
  
      # Concatenate two sentence embedding: [embed_sen_left, embed_sen_right,
      # |embed_sen_left-embed_sen_right|, embed_sen_left*embed_sen_right]
      embed_minus = keras.layers.Subtract()(
          [embed_sen_left, embed_sen_right]
      )
      embed_minus_abs = keras.layers.Lambda(lambda x: abs(x))(
          embed_minus
      )
      embed_multiply = keras.layers.Multiply()(
          [embed_sen_left, embed_sen_right]
      )
      concat = keras.layers.Concatenate(axis=1)(
          [
              embed_sen_left,
              embed_sen_right,
              embed_minus_abs,
              embed_multiply,
          ]
      )
  
      # Multiply perception layers to classify
      mlp_out = self._classifier(
          concat,
          mlp_num_layers=self._params["mlp_num_layers"],
          mlp_num_units=self._params["mlp_num_units"],
          drop_rate=self._params["dropout_rate"],
          leaky_relu_alpah=self._params["alpha"],
      )
      out = self._make_output_layer()(mlp_out)
  
      self._backend = keras.Model(
          inputs=[input_left, input_right], outputs=out
      )
  
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 2 for calling the HBMP obj's underlying member method code with example usage: obj.build() without return types