python - 我可以扩展一个 Tensorflow Estimator 来返回解释值吗?
问题描述
我大致按照文档中提供的教程构建了一个模型。tf.estimator.BoostedTreesClassifier
然后,我使用SavedModel 文档的SavedModels from Estimators部分中tf.Estimator.export_saved_model
描述的方法将其导出。这会加载到 TensorFlow Serving 并回答 gRPC 和 REST 请求。
我现在想包括解释因素以及任何预测。或者,不太理想的是,作为导出模型上可用的第二个签名。tf.estimator._BoostedTreesBase.experimental_predict_with_explanations
已经实现了适当的算法,如文档的本地可解释性部分所述。
我认为有可能以某种方式“扩展”现有的估计器,让我将此方法公开为另一个服务签名。我已经想到了几种方法,但到目前为止只尝试了前两种:
我试过了
export_saved_model
更改导出哪些签名
这并没有走得太远。暴露的签名有点动态,但似乎仅限于定义的训练、预测或评估选项tensorflow_core.python.saved_model.model_utils.mode_keys.KerasModeKeys
。
只需使用eval_savedmodel
?
我短暂地认为 Eval 可能是我正在寻找的东西,并遵循了一些 TensorFlow 模型分析的入门指南。我在这条路上走得越远,Eval 模型的主要区别似乎就是数据的加载方式,而这不是我想要改变的。
子类化估计器
导出子类模型有额外的注意事项。最重要的是,估计器不是模型。这是一个在输入、输出和配置周围有额外元数据的模型,所以我不清楚子类估计器是否可以像 Keras 模型一样导出。
我没有编写太多代码就放弃了这种子类化方法。
将 BoostedTrees 模型拉出 Estimator
我不够精明,无法自己使用低级原语来安排 BoostedTrees 模型。设置它的 Estimator 中的代码看起来相当复杂。利用这项工作会很好,但似乎 Estimator 处理model_fn
s,它们根据训练/预测/评估模式而变化,并且不清楚与 Keras 模型的关系是什么。
我为此写了一点代码,但也很快放弃了。
接下来是什么?
鉴于上述死胡同,我应该进一步说服哪个角度?
低级导出 API和低级模型构建 API 看起来都可以让我更接近解决方案。设置 Estimator 与使用任一 API 重新创建 Estimator 之间的差距似乎相当大。
我是否可以继续使用现有的 Estimator,但使用低级导出 API 创建带有“解释”签名的东西experimental_predict_with_explanations
?甚至是一步“预测和解释”?哪个教程会让我走上这条路?
解决方案
推荐阅读
- flutter - 慢慢滚动列表
- powerbi - 没有在 powerbi 中获取所有字段
- c# - 使用条件遍历 C# 中的行时,如何让数据表检测多个列?
- cmake - 如何使用 CMake 设置 libusb 依赖项?
- reactjs - 从对话框触发时,屏幕阅读器不会读取 Snackbars
- node.js - 持续部署到服务器
- google-cloud-platform - 为什么谷歌破坏了向虚拟机添加公共 SSH 密钥的能力?
- ag-grid - 行自动高度,但在事件上
- javascript - 如何在 webdriverIO 中单击 input type=radio
- fabric8 - certmanager implementation in the fabric8