code: def l2_batch_normalize(x, epsilon=1e-12, scope=None):
    
    with tf.name_scope(scope, "l2_batch_normalize") as name_scope:
      x_shape = tf.shape(x)
      x = tf.contrib.layers.flatten(x)
      x /= (epsilon + reduce_max(tf.abs(x), 1, keepdims=True))
      square_sum = reduce_sum(tf.square(x), 1, keepdims=True)
      x_inv_norm = tf.rsqrt(np.sqrt(epsilon) + square_sum)
      x_norm = tf.multiply(x, x_inv_norm)
      return tf.reshape(x_norm, x_shape, name_scope)
docs: Helper function to normalize a batch of vectors.
    :param x: the input placeholder
    :param epsilon: stabilizes division
    :return: the batch of l2 normalized vector