Description
I’m trying build tensorflow optimised model with TF-TRT path. Throwing the below error.
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framework/importer.py", line 501, in _import_graph_def_internal
graph._c_graph, serialized, options) # pylint: disable=protected-access
tensorflow.python.framework.errors_impl.InvalidArgumentError: Input 1 of node StatefulPartitionedCall was passed float from Conv1/kernel:0 incompatible with expected resource.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "tf_trt_handson.py", line 17, in <module>
tf_trt_converter.save('mobilenetv2'+'_'+PRECISION)
File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/compiler/tensorrt/trt_convert.py", line 713, in save
importer.import_graph_def(self._converted_graph_def, name="")
File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/util/deprecation.py", line 513, in new_func
return func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framework/importer.py", line 405, in import_graph_def
producer_op_list=producer_op_list)
File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framework/importer.py", line 505, in _import_graph_def_internal
raise ValueError(str(e))
ValueError: Input 1 of node StatefulPartitionedCall was passed float from Conv1/kernel:0 incompatible with expected resource.
Environment
TensorRT Version : 8.2.1.8-1+cuda10.2
GPU Type : Jetson nano
Nvidia Driver Version : CUDA Driver Version: 10.2
CUDA Version : cuda-toolkit-10-2 (= 10.2.460-1)
CUDNN Version : cuDNN Version: 8.2
Operating System + Version : Ubuntu 18.04(l4t with jetpack)
Python Version (if applicable) : 3.6.9
TensorFlow Version (if applicable) : ‘1.15.5’
PyTorch Version (if applicable) :
Baremetal or Container (if container which image + tag) :
Relevant Files
-----model saving code----
from matplotlib import pyplot as plt
import numpy as np
import tensorflow as tf
file = tf.keras.utils.get_file(
"grace_hopper.jpg",
"https://storage.googleapis.com/download.tensorflow.org/example_images/grace_hopper.jpg")
img = tf.keras.preprocessing.image.load_img(file, target_size=[224, 224])
plt.imshow(img)
plt.axis('off')
x = tf.keras.preprocessing.image.img_to_array(img)
x = tf.keras.applications.mobilenet_v2.preprocess_input(x[tf.newaxis,...])
labels_path = tf.keras.utils.get_file(
'ImageNetLabels.txt',
'https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt')
imagenet_labels = np.array(open(labels_path).read().splitlines())
print('Imagenet labels: ',imagenet_labels)
pretrained_model = tf.keras.applications.MobileNetV2()
result_before_save = pretrained_model(x)
print('Result before save: ',result_before_save)
#decoded = imagenet_labels[np.argsort(result_before_save)[0,::-1][:5]+1]
#print("Result before saving:\n", decoded)
mobilenet_saved_path = ('tensorrt/tf_trt')
tf.saved_model.save(pretrained_model, mobilenet_saved_path)
-----tf-trt—
import tensorflow as tf
from tensorflow.keras.applications import MobileNetV2
import numpy as np
from tensorflow.python.compiler.tensorrt import trt_convert as tf_trt
BATCH_SIZE = 32
#we generate a dummy batch of data to pass into the network just to get an understanding of its performance.
#This is normally where you would supply a numpy batch of images.
dummy_input_batch = np.zeros((BATCH_SIZE, 224, 224, 3))
PRECISION = 'FP32'
tf_trt_converter = tf_trt.TrtGraphConverter(input_saved_model_dir='/home/aitrios/tensorrt/tf_trt',precision_mode=PRECISION)
tf_trt_converter.convert()
tf_trt_converter.save('mobilenetv2'+'_'+PRECISION)
Steps To Reproduce
Kindly refer the code snipped attached.