in datasets.py [0:0]
def __iter__(self) -> Iterator[Tuple[torch.Tensor, torch.Tensor]]:
"""
Iterate over this dataset.
Yields:
Samples from the dataset. The first element is the spectrograms and
the second is the waveforms.
"""
shuffle_buffer = []
for clip_spec, clip_wave in self.raw_iter():
if self.generate:
yield clip_spec, clip_wave
continue
clips = self.extract_clips(clip_spec, clip_wave)
if self.validation:
# When validation, any order is fine.
yield from clips
else:
# For training, we want some randomness, so keep a shuffle
# buffer. When the shuffle buffer is full, shuffle it and yield
# all samples.
shuffle_buffer.extend(clips)
if len(shuffle_buffer) > SHUFFLE_BUFFER_SIZE:
random.shuffle(shuffle_buffer)
yield from shuffle_buffer
shuffle_buffer = []
if shuffle_buffer:
random.shuffle(shuffle_buffer)
yield from shuffle_buffer