docs: def encode(self, inputs, attention_bias):
      """Generate continuous representation for inputs.
  
      Args:
        inputs: int tensor with shape [batch_size, input_length].
        attention_bias: float tensor with shape [batch_size, 1, 1, input_length]
  
      Returns:
        float tensor with shape [batch_size, input_length, hidden_size]
      """
      with tf.name_scope("encode"):
        # Prepare inputs to the layer stack by adding positional encodings and
        # applying dropout.
        embedded_inputs = self.embedding_softmax_layer(inputs)
        inputs_padding = model_utils.get_padding(inputs)
  
        with tf.name_scope("add_pos_encoding"):
          length = tf.shape(embedded_inputs)[1]
          pos_encoding = model_utils.get_position_encoding(
              length, self.params.hidden_size)
          encoder_inputs = embedded_inputs + pos_encoding
  
        if self.train:
          mlperf_log.transformer_print(
              key=mlperf_log.MODEL_HP_LAYER_POSTPROCESS_DROPOUT,
              value=self.params.layer_postprocess_dropout)
          encoder_inputs = tf.nn.dropout(
              encoder_inputs, 1 - self.params.layer_postprocess_dropout)
  
        return self.encoder_stack(encoder_inputs, attention_bias, inputs_padding)