{"record":{"id":"0575b3120de3e67f","repo":"tensorflow/models","slug":"ema-can-only-work-with-the-legacy-optimizer-pleas","errorCode":null,"errorMessage":"EMA can only work with the legacy optimizer, please set `use_legacy_optimizer=True`.","messagePattern":"EMA can only work with the legacy optimizer, please set `use_legacy_optimizer=True`\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"official/modeling/optimization/optimizer_factory.py","lineNumber":250,"sourceCode":"    optimizer_dict['learning_rate'] = lr\n    if gradient_aggregator is not None:\n      optimizer_dict['gradient_aggregator'] = gradient_aggregator\n    if gradient_transformers is not None:\n      optimizer_dict['gradient_transformers'] = gradient_transformers\n\n    if use_legacy_optimizer:\n      optimizer = LEGACY_OPTIMIZERS_CLS[self._optimizer_type](**optimizer_dict)\n    else:\n      if 'decay' in optimizer_dict:\n        raise ValueError(\n            '`decay` is deprecated in new Keras optimizer, please reflect the '\n            'decay logic in `lr` or set `use_legacy_optimizer=True` to use the '\n            'legacy optimizer.')\n      optimizer = NEW_OPTIMIZERS_CLS[self._optimizer_type](**optimizer_dict)\n\n    if self._use_ema:\n      if not use_legacy_optimizer:\n        raise ValueError(\n            'EMA can only work with the legacy optimizer, please set '\n            '`use_legacy_optimizer=True`.')\n      optimizer = ema_optimizer.ExponentialMovingAverage(\n          optimizer, **self._ema_config.as_dict())\n    if postprocessor:\n      optimizer = postprocessor(optimizer)\n    if isinstance(optimizer, tf_keras.optimizers.Optimizer):\n      return optimizer\n    # The following check makes sure the function won't break in older TF\n    # version because of missing the experimental/legacy package.\n    if hasattr(tf_keras.optimizers, 'experimental'):\n      if isinstance(optimizer, tf_keras.optimizers.experimental.Optimizer):\n        return optimizer\n    if hasattr(tf_keras.optimizers, 'legacy'):\n      if isinstance(optimizer, tf_keras.optimizers.legacy.Optimizer):\n        return optimizer\n    raise TypeError('OptimizerFactory.build_optimizer returning a '\n                    'non-optimizer object: {}'.format(optimizer))","sourceCodeStart":232,"sourceCodeEnd":268,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/official/modeling/optimization/optimizer_factory.py#L232-L268","documentation":"Error \"EMA can only work with the legacy optimizer, please set `use_legacy_optimizer=True`.\" thrown in tensorflow/models.","triggerScenarios":"Thrown at official/modeling/optimization/optimizer_factory.py:250 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"}