仅当模型显示TensorFlow的改进时才保存模型检查点

时间:2017-09-05 13:48:24

标签: python tensorflow save

在使用实验中包含的Estimator时,您是否知道是否有办法选择保存哪个模型?因为每个' save_checkpoints_steps',模型都会被保存,但这个模型不一定是最好的。

def model_fn(features, labels, mode, params):
    predict = model_predict_()
    loss = model_loss()
    train_op = model_train_op(loss, mode)       
    predictions = {"predictions": predict}

    return tf.estimator.EstimatorSpec(
        mode = mode,
        predictions = predictions,
        loss = loss,
        train_op = train_op,
    )

def experiment_fn(run_config, hparams):
    estimator = tf.estimator.Estimator(
        model_fn = model_fn, 
        config = run_config,
        params = hparams
    )

    return learn.Experiment(
      estimator = estimator,
      train_input_fn = train_input_fn,
      eval_input_fn = eval_input_fn,
      eval_metrics = None,
      train_steps = 1000,
    )

ex = learn_runner.run(
        experiment_fn = experiment_fn,
        run_config = run_config,
        schedule = "train_and_evaluate",
        hparams =  hparams
)

输出如下:

  

INFO:tensorflow:将401的检查点保存到。\ model.ckpt。

     

INFO:tensorflow:global_step / sec:0.157117 INFO:tensorflow:step = 401,   损失= 2.95048(636.468秒)

     

信息:tensorflow:开始评估   2017-09-05-20:06:07 INFO:tensorflow:从中恢复参数   \ model.ckpt-401

     

信息:张量流:评估[1/1]信息:张量流:完成评估   2017-09-05-20:06:09

     

INFO:tensorflow:为全局步骤保存dict   401:global_step = 401,loss = 7.20411

     

INFO:tensorflow:验证(步骤401):   global_step = 401,损失= 7.20411

     

信息:tensorflow:训练损失=   2.95048,步骤= 401(315.393秒)

     

INFO:tensorflow:将451的检查点保存到   \ model.ckpt。

     

信息:tensorflow:在2017-09-05-20:11:32开始评估

     

INFO:tensorflow:从中恢复参数   \ model.ckpt-451

     

信息:张量流:评估[1/1]

每次保存最后一个模型时都会看到,这不一定是最好的。

1 个答案:

答案 0 :(得分:2)

为您的训练过程中断的事件保存检查点。如果您没有检查点,则需要从头开始重启。对于需要数周训练的大型车型来说,这是一个大问题。

一旦您的训练完成并且您对您的模型感到满意(用您的话说,"这是最好的"),您可以使用https://www.tensorflow.org/api_docs/python/tf/estimator/Estimator#export_savedmodel明确保存它。调用此方法位于您用于创建Estimator的{​​{1}}上。请注意,此方法可以保存"模型以进行推理"这意味着所有的渐变操作都将被剥离而不能保存。

编辑:回复Nicolas的评论 除了使用创建估算工具时传递的Experiemnt RunConfig选项,您还可以定期保存快照。如果您发现您的模型在10小时前达到了最佳性能,那么您应该可以从大致时间找到快照。