我正在尝试修改使用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
类是不可行的选择,因为这将涉及对正在使用的代码的重大更改。
答案 0 :(得分:1)
检查点与导出不同。检查点与故障恢复有关,涉及保存完整的训练状态(权重,全局步数等)。
在您的情况下,我建议您导出。导出的模型将写入名为“ exporter”的目录,并且服务输入功能指定最终用户将期望提供给预测服务的内容。
您可以使用“最佳出口商”类别仅出口表现最佳的模型:
https://www.tensorflow.org/api_docs/python/tf/estimator/BestExporter
该类导出最佳模型的服务图形和检查点。
此外,当新模型比现有模型更好时,它每次都会执行模型导出。