【问题标题】:Plot both validation and training accuracy using Custom Estimators使用自定义估计器绘制验证和训练准确性
【发布时间】:2019-09-04 13:58:30
【问题描述】:

所以我使用这个tutorial 来创建我自己的自定义估计器,但我无法让张量板在训练过程中同时绘制验证准确度。 Github 上的这个issue 完美地描述了我的问题。正如上一条评论中提到的那样,通过设置save_checkpoints_steps 对于一个很小的值,模型应该在每一步都进行评估,但是对我来说不是这样。跑完之后:

classifier = tf.estimator.Estimator(
  model_fn=my_model,
  params={
      'n_classes': 4,
  },
  model_dir=model_dir_str,
  config=tf.estimator.RunConfig(save_checkpoints_steps=int(1)))

loss_hook = early_stopping.stop_if_lower_hook(classifier, "loss", 0.2, model_dir_str + 'loss_eval')
acc_hook = early_stopping.stop_if_no_increase_hook(classifier, "accuracy", 100, model_dir_str + 'acc_eval')
train_spec = tf.estimator.TrainSpec(input_fn=input_train_fn, max_steps=steps, hooks=[loss_hook, acc_hook])
eval_spec = tf.estimator.EvalSpec(input_fn=input_eval_fn, steps=1000)
results = tf.estimator.train_and_evaluate(classifier, train_spec, eval_spec)

我在剧情中只得到两分。我已经尝试了不同的值,但我仍然得到相同的结果。

【问题讨论】:

    标签: python tensorflow tensorboard tensorflow-estimator


    【解决方案1】:

    由于没有人想出答案,我暂时发布了这个混乱的解决方法。

    loss_hook = early_stopping.stop_if_lower_hook(classifier, "loss", 0.2, 'loss_eval')
    acc_hook = early_stopping.stop_if_no_increase_hook(classifier, "accuracy", 100, 'acc_eval')    
    tf.logging.set_verbosity(False)
    for i in range(int(steps/10)):
        print(i)
        classifier.train(
            input_fn=input_train_fn,
            steps=10,
            hooks=[loss_hook, acc_hook])
        # Evaluate the model.
        eval_result = classifier.evaluate(input_fn=input_eval_fn, steps=5)
    print(eval_result)
    

    基本上,您会运行少量步骤的训练,然后进行一次评估。

    【讨论】:

      猜你喜欢
      • 2022-10-05
      • 2020-10-12
      • 2017-06-13
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 2021-07-30
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多