Estimator培训期间的验证

时间:2017-07-31 13:37:32

标签: tensorflow

不推荐使用TensorFlow r1.3监视器:

" 2016年12月5日&#34 ;,       "不推荐使用监视器。请使用tf.train.SessionRunHook。") 和Estimator.train(input_fn,hooks,..)仅适用于钩子。

如何使用钩子实现验证监视器的功能?

2 个答案:

答案 0 :(得分:3)

编辑:正如评论中指出的那样,感觉这是正确的事情,会在每次评估后重新初始化权重,使它几乎没用......

我最终能够使用train_and_evaluate函数监控我的验证错误(我理解你正在尝试做的事情)。您必须使用的EvalSpec对象具有参数start_delay_secsthrottle_secs来定义错误的频率(或您在估算工具中定义的任何内容EVAL模式)将被计算。

我的代码看起来有点像

classifier = tf.estimator.Estimator(
    model_fn=model_fn,
    model_dir=model_dir,
    params=params)

train_spec = tf.estimator.TrainSpec(
    input_fn = input_fn,
)

eval_spec = tf.estimator.EvalSpec(
    input_fn = valid_input_fn,
    throttle_secs=120,
    start_delay_secs=120,
)

tf.estimator.train_and_evaluate(
    classifier,
    train_spec,
    eval_spec
)

答案 1 :(得分:2)

我一直在使用SummarySaverHook而不是监视器。他们不是强大的"然而,培训材料尚未更新,其中包含有关如何完全复制Monitor功能的说明。

以下是我如何使用它:

summary_hook = tf.train.SummarySaverHook(
    save_steps=SAVE_EVERY_N_STEPS,
    output_dir='./tmp/rnnStats',
    scaffold=tf.train.Scaffold(),
    summary_op=tf.summary.merge_all())

print("Classifier.train")
classifier.train(input_fn=train_input_fn, steps=1000, hooks=[summary_hook])