从Learn_runner.run更新到GCMLE上的tf.estimator.train_and_evaluate

问题描述 投票:0回答:1

我正在努力确保在更新到tf.estimator.train_and_evaluate()而不是learn_runner.run()时覆盖所有内容。

我希望这个GCMLE自定义估算器样本的基础是以前的:

learn_runner.run(
      generate_experiment_fn(
          min_eval_frequency=args.min_eval_frequency,
          eval_delay_secs=args.eval_delay_secs,
          train_steps=args.train_steps,
          eval_steps=args.eval_steps,
          export_strategies=[saved_model_export_utils.make_export_strategy(
              model.SERVING_FUNCTIONS[args.export_format],
              exports_to_keep=1
          )]
      ),
      run_config=tf.contrib.learn.RunConfig(model_dir=args.job_dir),
      hparams=hparam.HParams(**args.__dict__)
  )

export_strategies:

以前,export_strategies会将最终的模型二进制文件放在$job_dir/export/Servo/$timestamp中。但是,当尝试转换为使用tf.estimator.train_and_evaluate时,我看不到如何复制此行为。

按照这个较新的自定义估算器示例,我已经通过了

exporter = tf.estimator.FinalExporter('saved-model', SERVING_FUNCTIONS[hparams.export_format])

进入EvalSpec exporters = [exporter],但它不像以前那样作为最终的出口策略。

run_config

以前run_config作为附加命令传递,带有learn_runner.run()。现在我在run_experiment()函数中的方法是将run_config()直接传递给tf.estimator.Estimatorconfig参数。我有什么功能吗?

例:

run_config = tf.estimator.RunConfig(model_dir=hparams.job_dir,
    save_checkpoints_steps=hparams.save_checkpoint_steps,
    save_summary_steps = hparams.save_summary_steps)

estimator = tf.estimator.Estimator(model_fn=model_fn,
                                   model_dir=hparams.job_dir,
                                   config = run_config,
                                   params = hparams)

新旧的实现中缺少新的run_config实现吗?

python tensorflow google-cloud-ml
1个回答
0
投票

问题来自停止num_epochsnum_steps的条件 - 似乎tf.estimator.Estimator与num_epochs不能很好地匹配,所以如果你想要一个导出文件夹你应该让你的停止条件为num_steps

另外,值得注意的是,如果您直接在model_dir中指定tf.estimator.Estimator()并在model_dir中指定run_config = tf.estimator.RunConfig(),那么这些名称必须匹配。 TF文档表明,如果它们相等,则可以在两个地方指定model_dir“model_dir:目录以保存模型参数,图形等等。这也可用于将检查点从目录加载到估算器中以继续训练以前保存的模型。如果为None,则在设置时将使用config中的model_dir。如果两者都设置,则它们必须相同。如果两者都是None,则将使用临时目录。

© www.soinside.com 2019 - 2024. All rights reserved.