我tf.estimator在TensorFlow 1.4中使用tf.estimator.train_and_evaluate它很棒,但我需要提前停止.添加它的首选方法是什么?
我认为这有一些tf.train.SessionRunHook地方.我看到有一个旧的contrib包ValidationMonitor似乎提前停止了,但它似乎不再是1.4了.或者未来的首选方式是依靠tf.keras(早期停止真的很容易)而不是tf.estimator/tf.layers/tf.data,或许?
使用TensorFlow r1.3监视器已弃用:
"2016-12-05","监视器已被弃用.请使用tf.train.SessionRunHook.")和Estimator.train(input_fn,hooks,..)仅适用于挂钩.
如何使用钩子实现验证监视器的功能?
我正在调整我的模型到TensorFlow的估算器API.
我最近根据验证数据询问了一个关于提前停止的问题,除了早期停止之外,还应该导出此时的最佳模型.
似乎我对模型导出是什么以及检查点是什么的理解并不完整.
检查点自动生成.根据我的理解,检查点足以使估算器开始"温暖" - 在错误之前使用每个训练过的重量或重量(例如,如果您经历了停电).
检查点的好处在于除了自定义估算器(即input_fn和model_fn)所需的代码之外,我不必编写任何代码.
虽然给定一个初始化的估算器,人们可以调用它的train方法来训练模型,但实际上这种方法相当乏味.通常人们想做几件事:
对于那些刚接触"高级"估算器API的人来说,似乎需要许多低级别的专业知识(例如,对于input_fn),如何让估算器做到这一点并不是直截了当的.
通过一些轻量代码,可以通过使用和使用来实现#1的重做.tf.estimator.TrainSpectf.estimator.EvalSpectf.estimator.train_and_evaluate
在上一个问题中,用户@GPhilo阐明了如何通过使用以下的半不直观函数来实现#2tf.contrib:
tf.contrib.estimator.stop_if_no_decrease_hook(my_estimator,'my_metric_to_monitor', 10000)
Run Code Online (Sandbox Code Playgroud)
(不直观的是"早期停止不是根据非改进评估的数量触发,而是根据特定步骤范围内的非改善性逃避的数量").
@GPhilo - 注意它与#2无关- 也回答了如何做#3(根据原始帖子的要求).然而,我不明白input_serving_fn它是什么,为什么需要它,或者如何制造它.
这使我更加困惑,因为不需要这样的功能来制作检查点,或者估计器从检查点开始"热".
所以我的问题是:
为了帮助回答我的问题,我提供了这份Colab文件.
这个自包含的笔记本生成一些虚拟数据,将其保存在TF记录中,有一个非常简单的自定义估算器,model_fn并input_fn使用TF记录文件训练此模型.因此,有人向我解释我需要为输入服务接收器功能制作什么占位符以及如何完成#3.
@GPhilo最重要的是我不能低估我对你的帮助,包括帮助我(并希望其他人)理解这件事.
我的"目标"(激励我提出这个问题)是尝试建立一个可重复使用的培训网络框架,这样我就可以通过不同的方式build_fn去(加上具有出口模型的生活质量,提前停止等).
经过几次你的回答,我发现现在有些困惑:
1.
您为推理模型提供输入的方式与您用于培训的方式不同 …