docs: def _get_single_set(self, num_objects, num_features):
      """Generate one input sequence and output label.
  
      Each sequences of objects has a feature that consists of the feature vector
      for that object plus the encoding for its ID, the reference vector ID and
      the n-th value relative ID for a total feature size of:
  
        `num_objects` * 3  + `num_features`
  
      Args:
        num_objects: int. number of objects in the sequence.
        num_features: int. feature size of each object.
  
      Returns:
        1. np.ndarray (`num_objects`, (`num_features` + 3 * `num_objects`)).
        2. np.ndarray (1,). Output object reference label.
      """
      # Generate random binary vectors
      data = np.random.uniform(-1, 1, size=(num_objects, num_features))
  
      distances = spdistance.squareform(spdistance.pdist(data))
      distance_idx = np.argsort(distances)
  
      # Choose random distance
      nth = np.random.randint(0, num_objects)
  
      # Pick out the nth furthest for each object
      nth_furthest = distance_idx[:, nth]
  
      # Choose random reference object
      reference = np.random.randint(0, num_objects)
  
      # Get identity of object that is the nth furthest from reference object
      labels = nth_furthest[reference]
  
      # Compile data
      object_ids = np.identity(num_objects)
      nth_matrix = np.zeros((num_objects, num_objects))
      nth_matrix[:, nth] = 1
      reference_object = np.zeros((num_objects, num_objects))
      reference_object[:, reference] = 1
  
      inputs = np.concatenate([data, object_ids, reference_object, nth_matrix],
                              axis=-1)
      inputs = np.random.permutation(inputs)
      labels = np.expand_dims(labels, axis=0)
      return inputs.astype(np.float32), labels.astype(np.float32)