code: def l2_norm(x, filters=None, epsilon=1e-6, name=None, reuse=None):
    
    if filters is None:
      filters = shape_list(x)[-1]
    with tf.variable_scope(name, default_name="l2_norm", values=[x], reuse=reuse):
      scale = tf.get_variable(
          "l2_norm_scale", [filters], initializer=tf.ones_initializer())
      bias = tf.get_variable(
          "l2_norm_bias", [filters], initializer=tf.zeros_initializer())
      epsilon, scale, bias = [cast_like(t, x) for t in [epsilon, scale, bias]]
      mean = tf.reduce_mean(x, axis=[-1], keepdims=True)
      l2norm = tf.reduce_sum(
          tf.squared_difference(x, mean), axis=[-1], keepdims=True)
      norm_x = (x - mean) * tf.rsqrt(l2norm + epsilon)
      return norm_x * scale + bias
docs: Layer normalization with l2 norm.