{"record":{"id":"b9baed1e28208720","repo":"tensorflow/models","slug":"model-must-be-provided-if-using-exponentialmovi","errorCode":null,"errorMessage":"`model` must be provided if using `ExponentialMovingAverage`.","messagePattern":"`model` must be provided if using `ExponentialMovingAverage`\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"official/legacy/image_classification/optimizer_factory.py","lineNumber":270,"sourceCode":"    optimizer = legacy_adamw.AdamWeightDecay(\n        learning_rate=base_learning_rate,\n        weight_decay_rate=weight_decay,\n        beta_1=beta_1,\n        beta_2=beta_2,\n        epsilon=epsilon,\n    )\n  else:\n    raise ValueError('Unknown optimizer %s' % optimizer_name)\n\n  if params.get('lookahead', None):\n    logging.info('Using lookahead optimizer.')\n    optimizer = Lookahead(optimizer)\n\n  # Moving average should be applied last, as it's applied at test time\n  moving_average_decay = params.get('moving_average_decay', 0.)\n  if moving_average_decay is not None and moving_average_decay > 0.:\n    if model is None:\n      raise ValueError(\n          '`model` must be provided if using `ExponentialMovingAverage`.')\n    logging.info('Including moving average decay.')\n    optimizer = optimization.ExponentialMovingAverage(\n        optimizer=optimizer, average_decay=moving_average_decay)\n    optimizer.shadow_copy(model)\n  return optimizer\n\n\ndef build_learning_rate(params: base_configs.LearningRateConfig,\n                        batch_size: Optional[int] = None,\n                        train_epochs: Optional[int] = None,\n                        train_steps: Optional[int] = None):\n  \"\"\"Build the learning rate given the provided configuration.\"\"\"\n  decay_type = params.name\n  base_lr = params.initial_lr\n  decay_rate = params.decay_rate\n  if params.decay_epochs is not None:\n    decay_steps = params.decay_epochs * train_steps","sourceCodeStart":252,"sourceCodeEnd":288,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/official/legacy/image_classification/optimizer_factory.py#L252-L288","documentation":"Error \"`model` must be provided if using `ExponentialMovingAverage`.\" thrown in tensorflow/models.","triggerScenarios":"Thrown at official/legacy/image_classification/optimizer_factory.py:270 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"}