{"record":{"id":"ab5ab8a101ef13f2","repo":"huggingface/pytorch-image-models","slug":"scheduledbatchsampler-requires-a-non-empty-sampler","errorCode":null,"errorMessage":"ScheduledBatchSampler requires a non-empty sampler.","messagePattern":"ScheduledBatchSampler requires a non-empty sampler\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"critical","filePath":"timm/data/scheduled_sampler.py","lineNumber":63,"sourceCode":"\n    def __init__(\n            self,\n            sampler: Sampler,\n            batch_sizes: Sequence[int],\n            choice_weights: Optional[Sequence[float]] = None,\n            seed: int = 0,\n            drop_last: bool = True,\n            shuffle_schedule: bool = True,\n            num_batches: Optional[int] = None,\n            choice_schedule: str = 'constant',\n            schedule_epochs: Optional[int] = None,\n            schedule_spread: float = 0.65,\n            schedule_random_mix: float = 0.1,\n    ) -> None:\n        if not hasattr(sampler, '__len__'):\n            raise TypeError('ScheduledBatchSampler requires a sampler with a length.')\n        if len(sampler) <= 0:\n            raise ValueError('ScheduledBatchSampler requires a non-empty sampler.')\n        if not batch_sizes:\n            raise ValueError('batch_sizes must contain at least one value.')\n        if any(int(batch_size) != batch_size or batch_size <= 0 for batch_size in batch_sizes):\n            raise ValueError('All scheduled batch sizes must be positive integers.')\n        if num_batches is not None and (int(num_batches) != num_batches or num_batches <= 0):\n            raise ValueError('num_batches must be a positive integer when specified.')\n        if choice_schedule not in ('constant', 'progressive'):\n            raise ValueError(\"choice_schedule must be 'constant' or 'progressive'.\")\n        if choice_schedule == 'progressive':\n            if len(batch_sizes) < 2:\n                raise ValueError('A progressive schedule requires at least two choices.')\n            if schedule_epochs is None or int(schedule_epochs) != schedule_epochs or schedule_epochs <= 0:\n                raise ValueError('schedule_epochs must be a positive integer for a progressive schedule.')\n            if schedule_spread < 0:\n                raise ValueError('schedule_spread must be non-negative.')\n            if not 0 <= schedule_random_mix <= 1:\n                raise ValueError('schedule_random_mix must be between 0 and 1.')\n","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/huggingface/pytorch-image-models/blob/9a5261e31b3b5128526eb2658333b4c0a54464ae/timm/data/scheduled_sampler.py#L45-L81","documentation":"ScheduledBatchSampler rejects samplers whose __len__() is <= 0 because there would be nothing to sample; raised right after the __len__ presence check during construction.","triggerScenarios":"Passing a sampler over an empty dataset (len(dataset)==0), a filtered/subset dataset with zero matching items, or a sampler initialized with n=0.","commonSituations":"Empty train split after a bad filter or path; Subset/DatasetFilter removing all rows; misconfigured distributed setup where the local rank got an empty shard.","solutions":["Check len(sampler) / len(dataset) before constructing and fix the empty data source (correct path, split, or filter).","For distributed runs, verify world_size divides or shards the data so each rank gets samples.","Log dataset size early in your training script to catch empty loads immediately."],"exampleFix":"assert len(sampler) > 0, f'empty sampler ({len(sampler)} items) — check dataset path/filters'\nsched = ScheduledBatchSampler(sampler, batch_sizes=[128, 256])","handlingStrategy":"validation","validationCode":"assert len(sampler) > 0, 'sampler/dataset is empty — check data loading'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Check len(dataset) > 0 right after loading data.","Validate filters/subsets didn't remove all rows.","In DDP, verify per-rank shard sizes."],"tags":["timm","sampler","empty-dataset"],"backgroundTag":"empty-dataset-sampler","analyzedSha":"9a5261e31b3b5128526eb2658333b4c0a54464ae","analyzedAt":"2026-08-27T02:34:25.417Z","schemaVersion":2},"datasetVersion":"2026-08-27T03:17:27.898Z"}