使用自定义估算器绘制验证和训练准确性
Plot both validation and training accuracy using Custom Estimators
所以我在 Github 上使用这个 tutorial to create my own custom estimator and I can't get the tensorboard to draw both validation accuracy during the training process. This 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)
剧情我只得到两点。我已经尝试了不同的值,但仍然得到相同的结果。
由于没有人给出答案,我暂时发布这个混乱的解决方法。
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)
基本上你运行训练少量的步骤,然后做一个评估。
所以我在 Github 上使用这个 tutorial to create my own custom estimator and I can't get the tensorboard to draw both validation accuracy during the training process. This 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)
剧情我只得到两点。我已经尝试了不同的值,但仍然得到相同的结果。
由于没有人给出答案,我暂时发布这个混乱的解决方法。
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)
基本上你运行训练少量的步骤,然后做一个评估。