class_docstr: Create an iterator that will alternate between two dataloaders.
  
  Args:
      dl_1 (DataLoader): first DataLoader
      dl_2 (DataLoader): second DataLoader
      num_steps (Optional[int]): Number of steps, if None will be the sum of both length.
      p (Optional[float]): Probability of choosing dl_1 over dl_2.
          If None, will be alternate between the two.
class_docstr_tok: ["Create","an","iterator","that","will","alternate","between","two","dataloaders",".","Args",":","dl_1","(","DataLoader",")",":","first","DataLoader","dl_2","(","DataLoader",")",":","second","DataLoader","num_steps","(","Optional","[","int","]",")",":","Number","of","steps",",","if","None","will","be","the","sum","of","both","length",".","p","(","Optional","[","float","]",")",":","Probability","of","choosing","dl_1","over","dl_2",".","If","None",",","will","be","alternate","between","the","two","."]
code: def __len__(self):
      return self.num_steps
  
file_path: baal/baal/utils/ssl_iterator.py
imports: from itertools import cycle
  from typing import Optional, Union, Dict, Sequence, Tuple
  import numpy
  from baal.active import ActiveLearningDataset
  from torch.utils.data import DataLoader
label_desc: Use image node_id 3 for calling the AlternateIterator obj's underlying member method code with example usage: obj.__len__() and returns: self