簡體   English   中英

使用自定義估算器繪制驗證和培訓准確性

[英]Plot both validation and training accuracy using Custom Estimators

所以我正在使用這個教程來創建我自己的自定義估算器,我不能讓張量板在訓練過程中同時繪制驗證准確性。 Github上的這個問題完美地描述了我的問題。 正如上次評論中提到的那樣,通過將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)

我只在情節中得到兩分。 我已經嘗試了不同的值,我仍然得到相同的結果。 帶有save_checkpoints_steps = 1的Tensorboard圖

由於沒有人想出答案,我暫時發布這個凌亂的解決方案。

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)

基本上,您只需要執行少量步驟的培訓,然后進行一次評估。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM