缺少 Tensorflow Lite 中的一些增强树操作

nik*_*kis 5 machine-learning tensorflow tensorflow-lite

我有一个Tensorflow基于的模型BoostedTreesClassifier,我想借助Tensorflow Lite.

但是,当我尝试将我的模型转换为Tensorflow Lite模型时,我收到一条错误消息,指出存在不受支持的操作(截至Tensorflow v2.3.1):

tf.BoostedTreesBucketize
tf.BoostedTreesEnsembleResourceHandleOp
tf.BoostedTreesPredict
tf.BoostedTreesQuantileStreamResourceGetBucketBoundaries
tf.BoostedTreesQuantileStreamResourceHandleOp
Run Code Online (Sandbox Code Playgroud)

添加tf.lite.OpsSet.SELECT_TF_OPS选项有点帮助,但仍有一些操作需要自定义实现:

tf.BoostedTreesEnsembleResourceHandleOp
tf.BoostedTreesPredict
tf.BoostedTreesQuantileStreamResourceGetBucketBoundaries
tf.BoostedTreesQuantileStreamResourceHandleOp
Run Code Online (Sandbox Code Playgroud)

我也试过Tensorflow v2.4.0-rc3,这将集合减少到以下一个:

tf.BoostedTreesEnsembleResourceHandleOp
tf.BoostedTreesPredict
Run Code Online (Sandbox Code Playgroud)

转换代码如下:

converter = tf.lite.TFLiteConverter.from_saved_model(model_path, signature_keys=['serving_default'])
converter.target_spec.supported_ops = [
    tf.lite.OpsSet.TFLITE_BUILTINS,
    tf.lite.OpsSet.SELECT_TF_OPS
]

tflite_model = converter.convert()
Run Code Online (Sandbox Code Playgroud)

signature_keys明确指定,因为导出的模型BoostedTreesClassifier#export_saved_model具有多个签名。

除了为不受支持的 ops 编写自定义实现之外,有没有办法在移动设备上部署这个模型?