docstr: Creates a generator operating around the split strategy and the
  experiences stream.
  
  :param split_strategy: The strategy used to split each experience in train
      and validation datasets.
  :return: A generator returning a 2 elements tuple (the train and validation
      datasets).
docstr_tok: ["Creates","a","generator","operating","around","the","split","strategy","and","the","experiences","stream",".",":","param","split_strategy",":","The","strategy","used","to","split","each","experience","in","train","and","validation","datasets",".",":","return",":","A","generator","returning","a","2","elements","tuple","(","the","train","and","validation","datasets",")","."]
code: def __init__(
      self,
      split_strategy: Callable[
          [AvalancheDataset],
          Tuple[AvalancheDataset, AvalancheDataset],
      ],
      experiences: Iterable[DatasetExperience],
  ) -> None:
      """
      Creates a generator operating around the split strategy and the
      experiences stream.
  
      :param split_strategy: The strategy used to split each experience in train
          and validation datasets.
      :return: A generator returning a 2 elements tuple (the train and validation
          datasets).
      """
      self.split_strategy = split_strategy
      self.experiences = experiences
  
imports: import random
  from avalanche.benchmarks.utils.data import AvalancheDataset
  import torch
  from itertools import tee
  from typing import Callable, Generator, Generic, List, Sequence, TypeVar, Union, Tuple, Optional, Iterable, Dict
  from .generic_scenario import EagerCLStream, CLScenario, CLExperience, make_stream
  from ..utils import TaskAwareSupervisedClassificationDataset
label_desc: Use image node_id 1 to create a new LazyTrainValSplitter object  with example: obj = LazyTrainValSplitter(split_strategy, experiences)