簡體   English   中英

將.pb 文件轉換為.tflite

[英]Convert .pb file to .tflite

我使用 TensorFlow object 檢測 ZDB974238714CA8DE634A7CE1D083A14F 訓練了一個自定義數據集 model。 Tensorflow 版本=2.2.0。 我試圖使用以下代碼將 .pb 文件轉換為 .tflite 並收到以下錯誤:

import tensorflow as tf

# Convert the model
converter = tf.lite.TFLiteConverter.from_saved_model('/content/drive/MyDrive/FINAL DNET MODEL/inference_graph/saved_model') # path to the SavedModel directory
tflite_model = converter.convert()

# Save the model.
with open('model.tflite', 'wb') as f:
  
  f.write(tflite_model)

錯誤信息:

--------------------------------------------------------------------------- Exception                                 Traceback (most recent call last) /usr/local/lib/python3.6/dist-packages/tensorflow/lite/python/convert.py in toco_convert_protos(model_flags_str, toco_flags_str, input_data_str, debug_info_str, enable_mlir_converter)
    212                                                  debug_info_str,
--> 213                                                  enable_mlir_converter)
    214       return model_str

4 frames Exception: <unknown>:0: error: loc(callsite(callsite("map/TensorArrayV2_1@__inference_call_func_18902" at "StatefulPartitionedCall@__inference_signature_wrapper_23056") at "StatefulPartitionedCall")): requires element_shape to be 1D tensor during TF Lite transformation pass <unknown>:0: note: loc("StatefulPartitionedCall"): called from <unknown>:0: error: loc(callsite(callsite("map/TensorArrayV2_1@__inference_call_func_18902" at "StatefulPartitionedCall@__inference_signature_wrapper_23056") at "StatefulPartitionedCall")): failed to legalize operation 'tf.TensorListReserve' that was explicitly marked illegal <unknown>:0: note: loc("StatefulPartitionedCall"): called from


During handling of the above exception, another exception occurred:

ConverterError                            Traceback (most recent call last) /usr/local/lib/python3.6/dist-packages/tensorflow/lite/python/convert.py in toco_convert_protos(model_flags_str, toco_flags_str, input_data_str, debug_info_str, enable_mlir_converter)
    214       return model_str
    215     except Exception as e:
--> 216       raise ConverterError(str(e))
    217 
    218   if distutils.spawn.find_executable(_toco_from_proto_bin) is None:

ConverterError: <unknown>:0: error: loc(callsite(callsite("map/TensorArrayV2_1@__inference_call_func_18902" at "StatefulPartitionedCall@__inference_signature_wrapper_23056") at "StatefulPartitionedCall")): requires element_shape to be 1D tensor during TF Lite transformation pass <unknown>:0: note: loc("StatefulPartitionedCall"): called from <unknown>:0: error: loc(callsite(callsite("map/TensorArrayV2_1@__inference_call_func_18902" at "StatefulPartitionedCall@__inference_signature_wrapper_23056") at "StatefulPartitionedCall")): failed to legalize operation 'tf.TensorListReserve' that was explicitly marked illegal <unknown>:0: note: loc("StatefulPartitionedCall"): called from

請幫我解決此錯誤並將.pb 文件轉換為.tflite。

此 Github 問題有類似的錯誤消息。 這個答案建議在調用map function 時指定fn_output_signature=tf.TensorSpec(shape, dtype)

嘗試運行這樣的東西

converter = tflite.TFLiteConverter.from_saved_model('PATH2model')
converter.target_spec.supported_ops = [
tf.lite.OpsSet.TFLITE_BUILTINS,
tf.lite.OpsSet.SELECT_TF_OPS
]
converter.optimizations = [tflite.Optimize.DEFAULT]
tflite_model = converter.convert() 
open("model.tflite", "wb").write(tflite_model)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM