【发布时间】:2019-06-25 20:25:54
【问题描述】:
我是 tensorflow 新手,对EvalSpec 不太了解。我不明白评估步骤的概念。我认为一旦我们学习(或部分学习)了模型,我们就会评估验证/评估数据集中的每个数据点。这是否意味着如果我们有x 的评估行数,那么我们应该指定eval steps = x?
是否有选择评估步骤值的指南?它取决于工作实例的数量,还是评估集中的行数?
【问题讨论】:
标签: python tensorflow evaluation
我是 tensorflow 新手,对EvalSpec 不太了解。我不明白评估步骤的概念。我认为一旦我们学习(或部分学习)了模型,我们就会评估验证/评估数据集中的每个数据点。这是否意味着如果我们有x 的评估行数,那么我们应该指定eval steps = x?
是否有选择评估步骤值的指南?它取决于工作实例的数量,还是评估集中的行数?
【问题讨论】:
标签: python tensorflow evaluation
不幸的是,该类的 API 文档很差。 code comments里有更多信息,说:
steps:Int。评估模型的正数步骤。如果None,评估直到input_fn引发输入结束异常。详情请见Estimator.evaluate。
听起来您正在做一些分布式培训。 train_and_evaluate 功能代码 cmets 下有很多信息,但特别是您应该阅读 this 有关分布式环境的部分。
【讨论】:
一个评估步骤类似于从您的评估input_fn 中消费一个项目,它应该输出批量数据。所以在这种情况下,步数应该大约是num_eval_rows/batch_size。
如果您在本地进行训练,您可以简单地将 step 参数设置为 None 并让您的 input_fn 不要重复您的数据,以便它在一个时期终止。在分布式情况下,不一定支持此行为,因此您必须适当地设置步数。
【讨论】: