class_docstr: Utility for training shadow models and generating shadow-datasets for membership inference attacks in scikit-learn,
  PyTorch and TensorFlow v2.
docstr: Returns a list of tuples the form (shadow_x_train, shadow_y_train) for each shadow model.
  `generate_shadow_dataset` or `generate_synthetic_shadow_dataset` must be called before, or a list of Nones will
  be returned.
docstr_tok: ["Returns","a","list","of","tuples","the","form","(","shadow_x_train",",","shadow_y_train",")","for","each","shadow","model",".","`","generate_shadow_dataset","`","or","`","generate_synthetic_shadow_dataset","`","must","be","called","before",",","or","a","list","of","Nones","will","be","returned","."]
code: def get_shadow_models_train_sets(
      self,
  ) -> List[Optional[Tuple[np.ndarray, np.ndarray]]]:
      """
      Returns a list of tuples the form (shadow_x_train, shadow_y_train) for each shadow model.
      `generate_shadow_dataset` or `generate_synthetic_shadow_dataset` must be called before, or a list of Nones will
      be returned.
      """
      return self._shadow_models_train_sets
  
file_path: adversarial-robustness-toolbox/art/attacks/inference/membership_inference/shadow_models.py
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import math
  from functools import reduce
  from typing import Callable, Tuple, TYPE_CHECKING, List, Optional, Sequence
  import numpy
label_desc: Use image node_id 8 for calling the ShadowModels obj's underlying member method code with example usage: obj.get_shadow_models_train_sets() and returns: self