code: def hybrid_forward(self, F, inputs, mask=None):  # pylint: disable=arguments-differ
          # pylint: disable=unused-argument
          
          outputs, attention_weights =\
              self.attention_cell(inputs, inputs, inputs, mask)
          outputs = self.proj(outputs)
          if self._dropout:
              outputs = self.dropout_layer(outputs)
          if self._use_residual:
              outputs = outputs + inputs
          outputs = self.layer_norm(outputs)
          outputs = self.ffn(outputs)
          additional_outputs = []
          if self._output_attention:
              additional_outputs.append(attention_weights)
          return outputs, additional_outputs
docs: Transformer Encoder Attention Cell.
  
          Parameters
          ----------
          inputs : Symbol or NDArray
              Input sequence. Shape (batch_size, length, C_in)
          mask : Symbol or NDArray or None
              Mask for inputs. Shape (batch_size, length, length)
  
          Returns
          -------
          encoder_cell_outputs: list
              Outputs of the encoder cell. Contains:
  
              - outputs of the transformer encoder cell. Shape (batch_size, length, C_out)
              - additional_outputs of all the transformer encoder cell