def __init__(self, representation_names, sample_freq, update_freq):
    """Constructs a SelectionStrategy object.

    Args:
      representation_names: A list of representations names for tf.summary.
      sample_freq: Frequency to draw a new selection (in steps).
      update_freq: Frequency to update the selector's state (in epochs).
    """
    self.num_representations = len(representation_names)
    self.representation_names = representation_names
    self.sample_freq = sample_freq
    self.update_freq = update_freq
    # index of the selected representation
    self.current_selection = tf.Variable(0, trainable=False)
    self.last_selection_step = tf.Variable(-1, trainable=False)
    self.last_update_epoch = tf.Variable(0, trainable=False)
    self.selection_counter = tf.Variable([0] * self.num_representations)