我对tensorflow并不熟悉,对EvalSpec没有很好的理解。我不明白评估步骤的概念。我认为,一旦我们学习了(或部分了解)模型,我们就会评估验证/评估数据集中的每个数据点。这是否意味着如果我们有x数的计算行,那么我们应该指定eval steps = x
是否有准则来选择eval步骤的值?这取决于工作实例的数量,还是计算集中的行数?
发布于 2019-06-26 02:06:35
不幸的是,该类的API文档非常糟糕。在代码注释中有更多的信息,上面说:
steps:Int.评估模型的步骤的正数。如果为None,则计算直到input_fn引发输入结束异常为止。详情请参见Estimator.evaluate。
听起来你在做一些分布式的训练。在train_and_evaluate函数代码注释中有很多信息,但是您尤其应该阅读有关分布式环境的这部分。
发布于 2019-06-26 02:45:05
一个评估步骤类似于使用您的评估input_fn中的一个项,它应该输出批数据。因此,在这种情况下,步骤的数量应该近似为num_eval_rows/batch_size。
如果您是在本地进行培训,您可以简单地将step参数设置为None,并让您的input_fn不再重复您的数据,这样它就会在某一时期终止。在分布式情况下,不一定支持这种行为,因此您必须适当地设置步骤数。
https://stackoverflow.com/questions/56761540
复制相似问题