{"record":{"id":"6494176f4bd83108","repo":"tensorflow/models","slug":"model-dir-must-be-specified-but-got-none-649417","errorCode":null,"errorMessage":"model_dir must be specified, but got None","messagePattern":"model_dir must be specified, but got None","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"official/core/train_utils.py","lineNumber":417,"sourceCode":"  params = ExperimentParser(flags_obj).parse()\n\n  params.validate()\n  if lock_return:\n    params.lock()\n\n  if print_return:\n    pp = pprint.PrettyPrinter()\n    logging.info('Final experiment parameters:\\n%s',\n                 pp.pformat(params.as_dict()))\n\n  return params\n\n\ndef serialize_config(params: config_definitions.ExperimentConfig,\n                     model_dir: str):\n  \"\"\"Serializes and saves the experiment config.\"\"\"\n  if model_dir is None:\n    raise ValueError('model_dir must be specified, but got None')\n  params_save_path = os.path.join(model_dir, 'params.yaml')\n  logging.info('Saving experiment configuration to %s', params_save_path)\n  tf.io.gfile.makedirs(model_dir)\n  hyperparams.save_params_dict_to_yaml(params, params_save_path)\n\n\ndef save_gin_config(filename_suffix: str, model_dir: str):\n  \"\"\"Serializes and saves the experiment config.\"\"\"\n  gin_save_path = os.path.join(\n      model_dir, 'operative_config.{}.gin'.format(filename_suffix))\n  logging.info('Saving gin configurations to %s', gin_save_path)\n  tf.io.gfile.makedirs(model_dir)\n  with tf.io.gfile.GFile(gin_save_path, 'w') as f:\n    f.write(gin.operative_config_str())\n\n\ndef read_global_step_from_checkpoint(ckpt_file_path):\n  \"\"\"Read global step from checkpoint, or get global step from its filename.\"\"\"","sourceCodeStart":399,"sourceCodeEnd":435,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/official/core/train_utils.py#L399-L435","documentation":"Error \"model_dir must be specified, but got None\" thrown in tensorflow/models.","triggerScenarios":"Thrown at official/core/train_utils.py:417 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"}