code: def global_pool_1d(inputs, pooling_type="MAX", mask=None):
    
    with tf.name_scope("global_pool", values=[inputs]):
      if mask is not None:
        mask = tf.expand_dims(mask, axis=2)
        inputs = tf.multiply(inputs, mask)
  
      if pooling_type == "MAX":
        # A tf.pool can be used here, but reduce is cleaner
        output = tf.reduce_max(inputs, axis=1)
      elif pooling_type == "AVR":
        if mask is not None:
          # Some elems are dummy elems so we can't just reduce the average.
          output = tf.reduce_sum(inputs, axis=1)
          num_elems = tf.reduce_sum(mask, axis=1, keepdims=True)
          output = tf.div(output, tf.maximum(num_elems, 1))
        else:
          output = tf.reduce_mean(inputs, axis=1)
  
    return output
docs: Pool elements across the last dimension.
  
    Useful to convert a list of vectors into a single vector so as
    to get a representation of a set.
  
    Args:
      inputs: A tensor of shape [batch_size, sequence_length, input_dims]
        containing the sequences of input vectors.
      pooling_type: the pooling type to use, MAX or AVR
      mask: A tensor of shape [batch_size, sequence_length] containing a
        mask for the inputs with 1's for existing elements, and 0's elsewhere.
  
    Returns:
      A tensor of shape [batch_size, input_dims] containing the sequences of
      transformed vectors.