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

  1. Set decoder.type to 'simple_decoder' or 'label_map_decoder' in the task YAML
  2. If using a TFDS dataset, set tfds_name so the factory decoder path is taken instead
  3. 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)