diff options
author | fban <fban@google.com> | 2023-02-23 18:32:02 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-02-23 18:32:02 +0000 |
commit | fa1842b8e3ee2c9ded1717919e275182eab06183 (patch) | |
tree | d55072186f27e1ffd242048ace78f15f91b2d2f3 | |
parent | f0159fedd85624f19c8e767760712ed3e41fa708 (diff) | |
parent | 8352230f051ecb800d974e61c30a3c56be34f828 (diff) | |
download | tflite-support-fa1842b8e3ee2c9ded1717919e275182eab06183.tar.gz |
Adds a minimal op-resolver for Rubidium's usage. am: 55d84e75c2 am: 8352230f05
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/tflite-support/+/20512608
Change-Id: Ifebd3d698db2d68a650ee652c74ee7932d6f06ef
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
3 files changed, 37 insertions, 12 deletions
@@ -225,7 +225,6 @@ cc_library_shared { "tensorflow_lite_support/java/src/native/task/core/builtin_op_resolver.cc", "tensorflow_lite_support/cc/utils/jni_utils.cc", ], - // TODO(b/247088924): Use linker_scripts here. version_script: "tensorflow_lite_support/java/tflite_version_script.lds", shared_libs: ["liblog"], static_libs: [ @@ -246,7 +245,6 @@ cc_library_shared { "tensorflow_headers", "flatbuffer_headers", "jni_headers", - "liblog_headers", "libtextclassifier_flatbuffer_headers", ], generated_headers: [ diff --git a/tensorflow_lite_support/java/src/javatests/org/tensorflow/lite/task/text/nlclassifier/BertNLClassifierTest.java b/tensorflow_lite_support/java/src/javatests/org/tensorflow/lite/task/text/nlclassifier/BertNLClassifierTest.java index 8c71f705..efaa9d99 100644 --- a/tensorflow_lite_support/java/src/javatests/org/tensorflow/lite/task/text/nlclassifier/BertNLClassifierTest.java +++ b/tensorflow_lite_support/java/src/javatests/org/tensorflow/lite/task/text/nlclassifier/BertNLClassifierTest.java @@ -124,6 +124,5 @@ public class BertNLClassifierTest { private void verifyDynamicInputResults(BertNLClassifier classifier) { List<Category> topics = classifier.classify("FooBarBaz"); assertThat(topics.size()).isEqualTo(446); - // TODO(ag/19888344): Add a test for a long text input. } } diff --git a/tensorflow_lite_support/java/src/native/task/core/minimal_op_resolver.cc b/tensorflow_lite_support/java/src/native/task/core/minimal_op_resolver.cc index 31d693a8..32d1054d 100644 --- a/tensorflow_lite_support/java/src/native/task/core/minimal_op_resolver.cc +++ b/tensorflow_lite_support/java/src/native/task/core/minimal_op_resolver.cc @@ -15,7 +15,6 @@ limitations under the License. #include <memory> -#include "absl/memory/memory.h" #include "tensorflow/lite/kernels/builtin_op_kernels.h" #include "tensorflow/lite/op_resolver.h" @@ -23,21 +22,15 @@ namespace tflite { namespace task { // Create a minimal MutableOpResolver to provide only -// the ops required by NLClassifier/BertNLClassifier. +// the ops required by the bert_nl_classifier and rb_model for BertNLClassifier. std::unique_ptr<MutableOpResolver> CreateOpResolver() { MutableOpResolver resolver; - resolver.AddBuiltin(::tflite::BuiltinOperator_DEQUANTIZE, - ::tflite::ops::builtin::Register_DEQUANTIZE()); resolver.AddBuiltin(::tflite::BuiltinOperator_RESHAPE, ::tflite::ops::builtin::Register_RESHAPE()); resolver.AddBuiltin(::tflite::BuiltinOperator_GATHER, ::tflite::ops::builtin::Register_GATHER()); resolver.AddBuiltin(::tflite::BuiltinOperator_STRIDED_SLICE, ::tflite::ops::builtin::Register_STRIDED_SLICE()); - resolver.AddBuiltin(::tflite::BuiltinOperator_PAD, - ::tflite::ops::builtin::Register_PAD()); - resolver.AddBuiltin(::tflite::BuiltinOperator_CONCATENATION, - ::tflite::ops::builtin::Register_CONCATENATION()); resolver.AddBuiltin(::tflite::BuiltinOperator_FULLY_CONNECTED, ::tflite::ops::builtin::Register_FULLY_CONNECTED()); resolver.AddBuiltin(::tflite::BuiltinOperator_CAST, @@ -54,7 +47,42 @@ std::unique_ptr<MutableOpResolver> CreateOpResolver() { ::tflite::ops::builtin::Register_PACK()); resolver.AddBuiltin(::tflite::BuiltinOperator_SOFTMAX, ::tflite::ops::builtin::Register_SOFTMAX()); - return absl::make_unique<MutableOpResolver>(resolver); + resolver.AddBuiltin(::tflite::BuiltinOperator_EXPAND_DIMS, + ::tflite::ops::builtin::Register_EXPAND_DIMS()); + resolver.AddBuiltin(::tflite::BuiltinOperator_SHAPE, + ::tflite::ops::builtin::Register_SHAPE()); + resolver.AddBuiltin(::tflite::BuiltinOperator_FILL, + ::tflite::ops::builtin::Register_FILL()); + resolver.AddBuiltin(::tflite::BuiltinOperator_SUB, + ::tflite::ops::builtin::Register_SUB()); + resolver.AddBuiltin(::tflite::BuiltinOperator_MEAN, + ::tflite::ops::builtin::Register_MEAN()); + resolver.AddBuiltin(::tflite::BuiltinOperator_SQUARED_DIFFERENCE, + ::tflite::ops::builtin::Register_SQUARED_DIFFERENCE()); + resolver.AddBuiltin(::tflite::BuiltinOperator_RSQRT, + ::tflite::ops::builtin::Register_RSQRT()); + resolver.AddBuiltin(::tflite::BuiltinOperator_BATCH_MATMUL, + ::tflite::ops::builtin::Register_BATCH_MATMUL()); + resolver.AddBuiltin(::tflite::BuiltinOperator_GELU, + ::tflite::ops::builtin::Register_GELU()); + resolver.AddBuiltin(::tflite::BuiltinOperator_TANH, + ::tflite::ops::builtin::Register_TANH()); + resolver.AddBuiltin(::tflite::BuiltinOperator_LOGISTIC, + ::tflite::ops::builtin::Register_LOGISTIC()); + resolver.AddBuiltin(::tflite::BuiltinOperator_SLICE, + ::tflite::ops::builtin::Register_SLICE()); + // Needed for the test bert_nl_classifier model. + resolver.AddBuiltin(::tflite::BuiltinOperator_PAD, + ::tflite::ops::builtin::Register_PAD()); + resolver.AddBuiltin(::tflite::BuiltinOperator_CONCATENATION, + ::tflite::ops::builtin::Register_CONCATENATION()); + resolver.AddBuiltin(::tflite::BuiltinOperator_FULLY_CONNECTED, + ::tflite::ops::builtin::Register_FULLY_CONNECTED(), + /*version=*/9); + resolver.AddBuiltin(::tflite::BuiltinOperator_DEQUANTIZE, + ::tflite::ops::builtin::Register_DEQUANTIZE(), + /*version=*/2); + return std::make_unique<MutableOpResolver>(resolver); } } // namespace task |