class_docstr: An experimental setup to explore the ROC of drift detection setups
  
  This tests a setup based on a drift detector and a feature extractor (the latter including reducers).
  
  The detector is fitted with `post_training`.
  
  Then given datamodules for in-distribution and out-of-distribution, non-drifted and drifted batches are constructed. The test batches have the `sample_size` given as a constructor parameter and a fraction `ood_ratio` samples (rounded up) are from the out-of-distribution datamodule.
  
  The datamodules are expected to provide a `default_dataloader` method taking
  `batch_size` and `num_samples` arguments (see the examples for details).
docstr: Called after training the main model, fits the drift detector.
docstr_tok: ["Called","after","training","the","main","model",",","fits","the","drift","detector","."]
code: def post_training(self, train_dataloader):
      "Called after training the main model, fits the drift detector."
      fit(train_dataloader, self.feature_extractor, self.drift_detector)
  
imports: import torch
  import tqdm
  from .fit import fit
  import torchdrift.utils
label_desc: Use image node_id 2 for calling the DriftDetectionExperiment obj's underlying member method code with example usage: obj.post_training(train_dataloader) without return types