code: def transformer_encoder_layers(inputs,
                                 num_layers,
                                 hparams,
                                 attention_type=AttentionType.GLOBAL,
                                 self_attention_bias=None,
                                 q_padding="VALID",
                                 kv_padding="VALID",
                                 name="transformer"):
    
    x = inputs
    x = tf.nn.dropout(x, 1.0 - hparams.layer_prepostprocess_dropout)
  
    for layer in range(num_layers):
      # attention layers + skip connections
      with tf.variable_scope("%s_layer_%d" % (name, layer)):
        if attention_type == AttentionType.LOCAL_2D:
          y = local_attention_2d(common_layers.layer_preprocess(x, hparams),
                                 hparams,
                                 attention_type="local_attention_2d")
        elif attention_type == AttentionType.LOCAL_1D:
          y = local_attention_1d(common_layers.layer_preprocess(x, hparams),
                                 hparams,
                                 attention_type="local_unmasked",
                                 q_padding=q_padding, kv_padding=kv_padding)
        elif attention_type == AttentionType.GLOBAL:
          y = full_self_attention(common_layers.layer_preprocess(x, hparams),
                                  self_attention_bias, hparams,
                                  q_padding=q_padding, kv_padding=kv_padding)
        x = common_layers.layer_postprocess(x, y, hparams)
        # feed-fwd layer + skip connections
        y = ffn_layer(common_layers.layer_preprocess(x, hparams), hparams)
        x = common_layers.layer_postprocess(x, y, hparams)
    return common_layers.layer_preprocess(x, hparams)
docs: Multi layer transformer encoder.