From b91570020e5bdf9f67851708fd2845976e6f43b2 Mon Sep 17 00:00:00 2001 From: Tom Wildenhain Date: Tue, 29 Dec 2020 19:17:08 -0500 Subject: [PATCH] Added a workaround for the TF bug that tensor.numpy() doesn't always have a dtype Signed-off-by: Tom Wildenhain --- tf2onnx/tf_loader.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tf2onnx/tf_loader.py b/tf2onnx/tf_loader.py index 67f49e0ea..1fa687336 100644 --- a/tf2onnx/tf_loader.py +++ b/tf2onnx/tf_loader.py @@ -12,6 +12,7 @@ from distutils.version import LooseVersion import tensorflow as tf +import numpy as np from tensorflow.python.ops import lookup_ops from tf2onnx import utils @@ -311,6 +312,12 @@ def _remove_non_variable_resources_from_captures(concrete_func): for i in reversed(range(len(concrete_func._captured_inputs))): if concrete_func._captured_inputs[i] is val_tensor: concrete_func._captured_inputs.pop(i) + elif val_tensor.dtype != tf.resource: + npval = val_tensor.numpy() + if not hasattr(npval, 'dtype'): + # Hack around a TF bug until PR is merged: https://github.com/tensorflow/tensorflow/pull/45610 + arr = np.array(npval) + val_tensor.numpy = lambda arr=arr: arr else: logger.warning( "Could not search for non-variable resources. Concrete function internal representation may have changed.")