class_docstr: Transformer based encoder layer
docstr: Model forward pass.
  
  Args:
      x (tf.Tensor): Input tensor.
      training (tf.Tensor): Training tensor.
      mask (tf.Tensor): Mask tensor.
  
  Returns:
      tf.Tensor: Output tensor.
docstr_tok: ["Model","forward","pass",".","Args",":","x","(","tf.Tensor",")",":","Input","tensor",".","training","(","tf.Tensor",")",":","Training","tensor",".","mask","(","tf.Tensor",")",":","Mask","tensor",".","Returns",":","tf.Tensor",":","Output","tensor","."]
code: def call(self, x, training, mask):
      """Model forward pass.
  
      Args:
          x (tf.Tensor): Input tensor.
          training (tf.Tensor): Training tensor.
          mask (tf.Tensor): Mask tensor.
  
      Returns:
          tf.Tensor: Output tensor.
      """
  
      x_norm = self.layer_normalization(x)
      attn_output = self.mha(queries=x_norm, keys=x)
      attn_output = self.ffn(attn_output)
      out = attn_output * mask
  
      return out
  
imports: import random
  import numpy
  from tqdm import tqdm
  import tensorflow
  from recommenders.utils.timer import Timer
label_desc: Use image node_id 3 for calling the EncoderLayer obj's underlying member method code with example usage: obj.call(x, training, mask) and returns: out