将SavedModel转换为TFLite

时间:2019-12-12 02:05:54

标签: tensorflow tensorflow-lite

我已经从here下载了FasterRCNN SavedModel。我想将其转换为TFLite模型。使用tflite_convert cli似乎很简单。

tflite_convert --output_file model.tflite --saved_model_dir faster_rcnn_resnet101_coco_2018_01_28/saved_model

但是,我收到一些有关未指定输入尺寸的问题

ValueError: None is only supported in the 1st dimension. Tensor 'image_tensor' has invalid shape '[None, None, None, 3]'

有人知道解决这个问题的方法吗?如果无法在TFLite中使用任意大小的图像,我想肯定有一定的空间可以覆盖image_tensor尺寸。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码段来实现。

saved_model_dir = 'Path_to_saved_model_dir'

# Convert the model.
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()

# Save the TF Lite model.
with tf.io.gfile.GFile('model.tflite', 'wb') as f:
  f.write(tflite_model)

注意:此功能不允许您指定输入形状,因此可以使用from_concrete_functions

model = tf.saved_model.load(saved_model_dir)
concrete_func = model.signatures[
  tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY]
concrete_func.inputs[0].set_shape([1, 256, 256, 3])
converter = TFLiteConverter.from_concrete_functions([concrete_func])