class_docstr: SVM trainer that takes care of training (using k-fold cross validation),
  and evaluating the SVMs
class_docstr_tok: ["SVM","trainer","that","takes","care","of","training","(","using","k-fold","cross","validation",")",",","and","evaluating","the","SVMs"]
docstr: Given the input data (features) and targets (labels) files, load the
  features of shape N x D and labels of shape (N,)
docstr_tok: ["Given","the","input","data","(","features",")","and","targets","(","labels",")","files",",","load","the","features","of","shape","N","x","D","and","labels","of","shape","(","N",",",")"]
code: def load_input_data(self, data_file, targets_file):
      """
      Given the input data (features) and targets (labels) files, load the
      features of shape N x D and labels of shape (N,)
      """
      assert g_pathmgr.exists(data_file), "Data file not found. Abort!"
      assert g_pathmgr.exists(
          targets_file
      ), "Targets file not found. Abort!"
      # load the features and the targets
      logging.info("loading features and targets...")
      targets = load_file(targets_file)
      features = np.array(load_file(data_file)).astype(np.float64)
      assert features.shape[0] == targets.shape[0], "Mismatched #images"
      logging.info(
          f"Loaded features: {features.shape} and targets: {targets.shape}"
      )
      return features, targets
  
imports: import logging
  import pickle
  import threading
  import numpy
  from iopath.common.file_io import g_pathmgr
  from sklearn.model_selection import cross_val_score
  from sklearn.svm import LinearSVC
  from vissl.utils.io import load_file, save_file
  from vissl.utils.svm_utils.evaluate import get_precision_recall
label_desc: Use image node_id 3 for calling the SVMTrainer obj's underlying member method code with example usage: obj.load_input_data(data_file, targets_file) and returns: features,  targets