Assembles a batch of input tensors and output labels.

    Args:
      batch_size: int. number of sequence batches.
      num_objects: int. number of objects in the sequence.
      num_features: int. feature size of each object.

    Returns:
      1. np.ndarray (`batch_size`, `num_objects`,
                     (`num_features` + 3 * `num_objects`)).
      2. np.ndarray (`batch_size`). Output object reference label.

def _get_batch_data(self, batch_size, num_objects, num_features):
    """Assembles a batch of input tensors and output labels.

    Args:
      batch_size: int. number of sequence batches.
      num_objects: int. number of objects in the sequence.
      num_features: int. feature size of each object.

    Returns:
      1. np.ndarray (`batch_size`, `num_objects`,
                     (`num_features` + 3 * `num_objects`)).
      2. np.ndarray (`batch_size`). Output object reference label.
    """
    all_inputs = []
    all_labels = []
    for _ in six.moves.range(batch_size):
      inputs, labels = self._get_single_set(num_objects, num_features)
      all_inputs += [inputs]
      all_labels += [labels]
    input_data = np.concatenate(all_inputs, axis=0)
    label_data = np.concatenate(all_labels, axis=0)
    return input_data, label_data