code: def linear_set_layer(layer_size,
                       inputs,
                       context=None,
                       activation_fn=tf.nn.relu,
                       dropout=0.0,
                       name=None):
    
    with tf.variable_scope(
        name, default_name="linear_set_layer", values=[inputs]):
      # Apply 1D convolution to apply linear filter to each element
      # along the 2nd dimension.
      outputs = conv1d(inputs, layer_size, 1, activation=None, name="set_conv")
  
      # Apply the context if it exists.
      if context is not None:
        # Unfortunately tf doesn't support broadcasting via concat, but we can
        # simply add the transformed context to get the same effect.
        if len(context.get_shape().as_list()) == 2:
          context = tf.expand_dims(context, axis=1)
        cont_tfm = conv1d(
            context, layer_size, 1, activation=None, name="cont_conv")
        outputs += cont_tfm
  
      if activation_fn is not None:
        outputs = activation_fn(outputs)
  
      if dropout != 0.0:
        outputs = tf.nn.dropout(outputs, 1.0 - dropout)
  
      return outputs
docs: Basic layer type for doing funky things with sets.
  
    Applies a linear transformation to each element in the input set.
    If a context is supplied, it is concatenated with the inputs.
      e.g. One can use global_pool_1d to get a representation of the set which
      can then be used as the context for the next layer.
  
    TODO: Add bias add (or control the biases used).
  
    Args:
      layer_size: Dimension to transform the input vectors to.
      inputs: A tensor of shape [batch_size, sequence_length, input_dims]
        containing the sequences of input vectors.
      context: A tensor of shape [batch_size, context_dims] containing a global
        statistic about the set.
      activation_fn: The activation function to use.
      dropout: Dropout probability.
      name: name.
  
    Returns:
      Tensor of shape [batch_size, sequence_length, output_dims] containing the
      sequences of transformed vectors.