{"record":{"id":"ec82b0708b56e906","repo":"tensorflow/models","slug":"additional-classifier-layer-is-needed-if-final-dec-ec82b0","errorCode":null,"errorMessage":"Additional classifier layer is needed if final decoder projected filters does not match num_classes!","messagePattern":"Additional classifier layer is needed if final decoder projected filters does not match num_classes!","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"official/projects/mosaic/qat/modeling/heads/mosaic_head.py","lineNumber":172,"sourceCode":"            use_sync_bn=use_sync_bn,\n            batchnorm_momentum=batchnorm_momentum,\n            batchnorm_epsilon=batchnorm_epsilon,\n            activation=activation,\n            kernel_initializer=kernel_initializer,\n            kernel_regularizer=kernel_regularizer,\n            interpolation=interpolation)\n        self._merge_stages.append(sum_merge_stage)\n      else:\n        raise ValueError(\n            'A stage merge style in MOSAIC Decoder can only be concat_merge '\n            'or sum_merge.')\n\n    # Concat merge or sum merge does not require an additional classifer layer\n    # unless the final decoder projected filter does not match num_classes.\n    final_decoder_projected_filter = decoder_projected_filters[-1]\n    if (final_decoder_projected_filter != num_classes and\n        not use_additional_classifier_layer):\n      raise ValueError('Additional classifier layer is needed if final decoder '\n                       'projected filters does not match num_classes!')\n    self._use_additional_classifier_layer = use_additional_classifier_layer\n    if use_additional_classifier_layer:\n      # This additional classification layer uses different kernel\n      # initializers and bias compared to earlier blocks.\n      self._pixelwise_classifier = helper.Conv2DQuantized(\n          name='pixelwise_classifier',\n          filters=num_classes,\n          kernel_size=classifier_kernel_size,\n          padding='same',\n          bias_initializer=tf.zeros_initializer(),\n          kernel_initializer=tf_keras.initializers.RandomNormal(stddev=0.01),\n          kernel_regularizer=kernel_regularizer,\n          bias_regularizer=bias_regularizer,\n          activation=helper.NoOpActivation(),\n          use_bias=True)\n\n      self._activation_fn = tfmot.quantization.keras.QuantizeWrapperV2(","sourceCodeStart":154,"sourceCodeEnd":190,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/official/projects/mosaic/qat/modeling/heads/mosaic_head.py#L154-L190","documentation":"Error \"Additional classifier layer is needed if final decoder projected filters does not match num_classes!\" thrown in tensorflow/models.","triggerScenarios":"Thrown at official/projects/mosaic/qat/modeling/heads/mosaic_head.py:172 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e006f5f0d534913e49c1f1dae87364039fa607e2","analyzedAt":"2026-08-24T14:09:15.576Z","schemaVersion":2},"datasetVersion":"2026-08-24T17:17:21.512Z"}