tensorflow/models · error · ValueError
Unknown decoder type
Error message
Unknown decoder type: {}! What it means
Dispatch fall-through in YoloTask._get_data_decoder: params.tfds_name is empty, so the code branches on params.decoder.type, but the value matched neither 'simple_decoder' nor 'label_map_decoder'. The decoder type selects how tf.Example records are parsed; an unrecognized string (typo or new type) leaves no decoder to return. generate_anchors and build_inputs both depend on this selection, so input construction fails immediately.
Solutions
- Set decoder.type to 'simple_decoder' or 'label_map_decoder' in the task YAML
- If using a TFDS dataset, set tfds_name so the factory decoder path is taken instead
- Check for typos in the decoder type string
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at official/projects/yolo/tasks/yolo.py:145 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tensorflow/models@e006f5f0d5 (2026-08-24).
Data as JSON: /api/errors/ead044621eaea222.
Report an issue: GitHub.
Appendix: source
Thrown at official/projects/yolo/tasks/yolo.py:145
return model
def _get_data_decoder(self, params):
"""Get a decoder object to decode the dataset."""
if params.tfds_name:
decoder = tfds_factory.get_detection_decoder(params.tfds_name)
else:
decoder_cfg = params.decoder.get()
if params.decoder.type == 'simple_decoder':
self._coco_91_to_80 = decoder_cfg.coco91_to_80
decoder = tf_example_decoder.TfExampleDecoder(
coco91_to_80=decoder_cfg.coco91_to_80,
regenerate_source_id=decoder_cfg.regenerate_source_id)
elif params.decoder.type == 'label_map_decoder':
decoder = tf_example_label_map_decoder.TfExampleDecoderLabelMap(
label_map=decoder_cfg.label_map,
regenerate_source_id=decoder_cfg.regenerate_source_id)
else:
raise ValueError('Unknown decoder type: {}!'.format(
params.decoder.type))
return decoder
def build_inputs(self, params, input_context=None):
"""Build input dataset."""
model = self.task_config.model
# get anchor boxes dict based on models min and max level
backbone = model.backbone.get()
anchor_dict, level_limits = model.anchor_boxes.get(backbone.min_level,
backbone.max_level)
params.seed = self.task_config.seed
# set shared patamters between mosaic and yolo_input
base_config = dict(
letter_box=params.parser.letter_box,
aug_rand_translate=params.parser.aug_rand_translate,
aug_rand_angle=params.parser.aug_rand_angle,View on GitHub (pinned to e006f5f0d5)