aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/contrib
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2018-08-02 08:58:32 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-08-02 09:04:34 -0700
commit6e9fbf329bb7b43c8d0370c45ecb612578b69a1f (patch)
tree4978c214748c05eb6b22b4af6f362960c25faae1 /tensorflow/contrib
parentc689ee42aa7b64bd41adf7728d6674f2b57c72bc (diff)
Assign NullOps to all custom ops starting with Eager:
PiperOrigin-RevId: 207108296
Diffstat (limited to 'tensorflow/contrib')
-rw-r--r--tensorflow/contrib/lite/examples/label_image/bitmap_helpers_impl.h8
-rw-r--r--tensorflow/contrib/lite/kernels/register.cc27
-rw-r--r--tensorflow/contrib/lite/kernels/register.h4
3 files changed, 32 insertions, 7 deletions
diff --git a/tensorflow/contrib/lite/examples/label_image/bitmap_helpers_impl.h b/tensorflow/contrib/lite/examples/label_image/bitmap_helpers_impl.h
index e36218e4f1..6fdcf78b69 100644
--- a/tensorflow/contrib/lite/examples/label_image/bitmap_helpers_impl.h
+++ b/tensorflow/contrib/lite/examples/label_image/bitmap_helpers_impl.h
@@ -16,11 +16,7 @@ limitations under the License.
#ifndef TENSORFLOW_CONTRIB_LITE_EXAMPLES_LABEL_IMAGE_BITMAP_HELPERS_IMPL_H_
#define TENSORFLOW_CONTRIB_LITE_EXAMPLES_LABEL_IMAGE_BITMAP_HELPERS_IMPL_H_
-#include "tensorflow/contrib/lite/builtin_op_data.h"
-#include "tensorflow/contrib/lite/interpreter.h"
-#include "tensorflow/contrib/lite/kernels/register.h"
-#include "tensorflow/contrib/lite/string_util.h"
-#include "tensorflow/contrib/lite/version.h"
+#include "tensorflow/contrib/lite/examples/label_image/label_image.h"
#include "tensorflow/contrib/lite/builtin_op_data.h"
#include "tensorflow/contrib/lite/interpreter.h"
@@ -28,8 +24,6 @@ limitations under the License.
#include "tensorflow/contrib/lite/string_util.h"
#include "tensorflow/contrib/lite/version.h"
-#include "tensorflow/contrib/lite/examples/label_image/label_image.h"
-
namespace tflite {
namespace label_image {
diff --git a/tensorflow/contrib/lite/kernels/register.cc b/tensorflow/contrib/lite/kernels/register.cc
index e632728841..5ad0f4d232 100644
--- a/tensorflow/contrib/lite/kernels/register.cc
+++ b/tensorflow/contrib/lite/kernels/register.cc
@@ -110,6 +110,33 @@ TfLiteRegistration* Register_PACK();
TfLiteRegistration* Register_ONE_HOT();
TfLiteRegistration* Register_LOGICAL_OR();
+TfLiteStatus UnsupportedTensorFlowOp(TfLiteContext* context, TfLiteNode* node) {
+ context->ReportError(
+ context,
+ "Regular TensorFlow ops are not supported by this interpreter. Make sure "
+ "you invoke the Eager delegate before inference.");
+ return kTfLiteError;
+}
+
+const TfLiteRegistration* BuiltinOpResolver::FindOp(tflite::BuiltinOperator op,
+ int version) const {
+ return MutableOpResolver::FindOp(op, version);
+}
+
+const TfLiteRegistration* BuiltinOpResolver::FindOp(const char* op,
+ int version) const {
+ // Return the NULL Op for all ops whose name start with "Eager:", allowing
+ // the interpreter to delegate their execution.
+ if (string(op).find("Eager:") == 0) {
+ static TfLiteRegistration null_op{
+ nullptr, nullptr, &UnsupportedTensorFlowOp,
+ nullptr, nullptr, BuiltinOperator_CUSTOM,
+ "Eager", 1};
+ return &null_op;
+ }
+ return MutableOpResolver::FindOp(op, version);
+}
+
BuiltinOpResolver::BuiltinOpResolver() {
AddBuiltin(BuiltinOperator_RELU, Register_RELU());
AddBuiltin(BuiltinOperator_RELU_N1_TO_1, Register_RELU_N1_TO_1());
diff --git a/tensorflow/contrib/lite/kernels/register.h b/tensorflow/contrib/lite/kernels/register.h
index 940718d67e..0296152d68 100644
--- a/tensorflow/contrib/lite/kernels/register.h
+++ b/tensorflow/contrib/lite/kernels/register.h
@@ -26,6 +26,10 @@ namespace builtin {
class BuiltinOpResolver : public MutableOpResolver {
public:
BuiltinOpResolver();
+
+ const TfLiteRegistration* FindOp(tflite::BuiltinOperator op,
+ int version) const override;
+ const TfLiteRegistration* FindOp(const char* op, int version) const override;
};
} // namespace builtin