{"record":{"id":"a73111783ad88f20","repo":"facebookresearch/detectron2","slug":"unknown-training-sampler","errorCode":null,"errorMessage":"Unknown training sampler: {}","messagePattern":"Unknown training sampler: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"detectron2/data/build.py","lineNumber":508,"sourceCode":"        else:\n            logger.info(\"Using training sampler {}\".format(sampler_name))\n            if sampler_name == \"TrainingSampler\":\n                sampler = TrainingSampler(len(dataset), seed=cfg.SEED)\n            elif sampler_name == \"RepeatFactorTrainingSampler\":\n                repeat_factors = RepeatFactorTrainingSampler.repeat_factors_from_category_frequency(\n                    dataset, cfg.DATALOADER.REPEAT_THRESHOLD, sqrt=cfg.DATALOADER.REPEAT_SQRT\n                )\n                sampler = RepeatFactorTrainingSampler(repeat_factors, seed=cfg.SEED)\n            elif sampler_name == \"RandomSubsetTrainingSampler\":\n                sampler = RandomSubsetTrainingSampler(\n                    len(dataset), cfg.DATALOADER.RANDOM_SUBSET_RATIO\n                )\n            elif sampler_name == \"WeightedTrainingSampler\":\n                sampler = _build_weighted_sampler(cfg)\n            elif sampler_name == \"WeightedCategoryTrainingSampler\":\n                sampler = _build_weighted_sampler(cfg, enable_category_balance=True)\n            else:\n                raise ValueError(\"Unknown training sampler: {}\".format(sampler_name))\n\n    return {\n        \"dataset\": dataset,\n        \"sampler\": sampler,\n        \"mapper\": mapper,\n        \"total_batch_size\": cfg.SOLVER.IMS_PER_BATCH,\n        \"aspect_ratio_grouping\": cfg.DATALOADER.ASPECT_RATIO_GROUPING,\n        \"num_workers\": cfg.DATALOADER.NUM_WORKERS,\n    }\n\n\n@configurable(from_config=_train_loader_from_config)\ndef build_detection_train_loader(\n    dataset,\n    *,\n    mapper,\n    sampler=None,\n    total_batch_size,","sourceCodeStart":490,"sourceCodeEnd":526,"githubUrl":"https://github.com/facebookresearch/detectron2/blob/a2f4a8771ab77e8411c26b27f24f9489a28a2453/detectron2/data/build.py#L490-L526","documentation":"The training dataloader's from_config reads cfg.DATALOADER.SAMPLER_NAME and supports a fixed set ('TrainingSampler', 'RandomSubsetTrainingSampler', 'WeightedTrainingSampler', 'WeightedCategoryTrainingSampler', 'RepeatFactorTrainingSampler' depending on version). Any other string raises this ValueError.","triggerScenarios":"Setting cfg.DATALOADER.SAMPLER_NAME = 'my_sampler' or a typo like 'training_sampler' (wrong case), then calling build_detection_train_loader(cfg).","commonSituations":"Typos/case errors in config yaml; version drift where a sampler name was removed/renamed; users expecting custom samplers to be auto-discovered.","solutions":["Fix the name to one of the supported values (check the elif chain in detectron2/data/build.py)","For custom sampling, implement a custom build_detection_train_loader that constructs your sampler directly","Copy exact spelling from detectron2/config/defaults.py DATALOADER.SAMPLER_NAME docs in your version"],"exampleFix":"# before\ncfg.DATALOADER.SAMPLER_NAME = \"trainingsampler\"\n# after\ncfg.DATALOADER.SAMPLER_NAME = \"TrainingSampler\"","handlingStrategy":"validation","validationCode":"known = {\"TrainingSampler\", \"RandomSubsetTrainingSampler\", \"RepeatFactorTrainingSampler\", \"WeightedTrainingSampler\", \"WeightedCategoryTrainingSampler\"}\nassert cfg.DATALOADER.SAMPLER_NAME in known, f\"unknown sampler {cfg.DATALOADER.SAMPLER_NAME}\"","typeGuard":"def is_known_sampler(name: str) -> bool:\n    return name in {\"TrainingSampler\", \"RandomSubsetTrainingSampler\", \"RepeatFactorTrainingSampler\", \"WeightedTrainingSampler\", \"WeightedCategoryTrainingSampler\"}","tryCatchPattern":"try:\n    loader = build_detection_train_loader(cfg)\nexcept ValueError as e:\n    if \"Unknown training sampler\" in str(e):\n        cfg.DATALOADER.SAMPLER_NAME = \"TrainingSampler\"\n        loader = build_detection_train_loader(cfg)\n    else:\n        raise","preventionTips":["Copy sampler names verbatim from defaults.py","Add config validation at startup","Write a custom loader builder for custom samplers instead of the name registry"],"tags":["dataloader","sampler","detectron2","config"],"backgroundTag":"invalid-config-value","analyzedSha":"a2f4a8771ab77e8411c26b27f24f9489a28a2453","analyzedAt":"2026-08-27T12:08:21.260Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}