通过SessionRunHooks访问Estimator评估结果

时间:2018-10-04 04:57:12

标签: python tensorflow tensorflow-estimator

我正在尝试修改使用TensorFlow(v1.10)中Estimator类的程序,我想每次进行评估时都访问评估指标结果,以便仅在新的最大值时才可以复制检查点文件已经实现。

我的一个想法是创建一个从SessionRunHook继承的类,并在after_run方法中完成我想要的工作。根据{{​​3}},我可以指定使用after_run传递给before_run的内容。但是,我找不到从传递到before_run的信息中访问所需评估指标结果的方法。

我查看了Estimator代码,看来它是documentation,所以我的另一个想法是用after_run方法读回它,但是writing the results to a summary file似乎没有提供任何读取操作。

我还有其他方法可以实现自己的目标吗?不使用Estimator类是不可行的选择,因为这将涉及对正在使用的代码的重大更改。

1 个答案:

答案 0 :(得分:1)

检查点与导出不同。检查点与故障恢复有关,涉及保存完整的训练状态(权重,全局步数等)。

在您的情况下,我建议您导出。导出的模型将写入名为“ exporter”的目录,并且服务输入功能指定最终用户将期望提供给预测服务的内容。

您可以使用“最佳出口商”类别仅出口表现最佳的模型:

  

https://www.tensorflow.org/api_docs/python/tf/estimator/BestExporter

该类导出最佳模型的服务图形和检查点。

此外,当新模型比现有模型更好时,它每次都会执行模型导出。