Я пытаюсь преобразовать openimages_v4 / ssd / mobilenet_v2 в tflite, используя следующие код, предложенный здесь:
import tensorflow as tf
MODEL_DIR = 'openimages_v4_ssd_mobilenet_v2_1'
SIGNATURE_KEYS = ['default']
SIGNATURE_TAGS = set()
saved_model = tf.saved_model.load(MODEL_DIR, tags=SIGNATURE_TAGS)
tf.saved_model.save(saved_model, 'new_model_path', signatures=saved_model.signatures)
converter = tf.lite.TFLiteConverter.from_saved_model('new_model_path', signature_keys=SIGNATURE_KEYS, tags=['serve'])
converter.target_spec.supported_ops = [
tf.lite.OpsSet.TFLITE_BUILTINS, # enable TensorFlow Lite ops.
tf.lite.OpsSet.SELECT_TF_OPS # enable TensorFlow ops.
]
tflite_model = converter.convert()
но это дает эту ошибку:
<unknown>:0: error: failed while converting: 'main': Ops that need custom implementation (enabled via setting the -emit-custom-ops flag):
tf.HashTableV2 {container = "", device = "", key_dtype = i64, shared_name = "hub_input/index_to_string_1_load_0_3", use_node_name_sharing = true, value_dtype = !tf.string}
tf.HashTableV2 {container = "", device = "", key_dtype = i64, shared_name = "hub_input/index_to_string_load_0_2", use_node_name_sharing = true, value_dtype = !tf.string}
tf.LookupTableFindV2 {device = ""}
tf.LookupTableImportV2 {device = ""}
Мне удалось обойти эти ошибки, добавив:
converter.allow_custom_ops = True
Но согласно сообщению этой проблемы на github от 13 апреля 2020 г .:
Временно удалена поддержка AddHashtableOps в Python. Однако вы все равно можете добавить это в интерпретатор на C ++.
Так ли это до сих пор? Также для фрагмента кода о том, как использовать модель tflite, в предыдущем комментарии по той же проблеме, что нужно импортировать, чтобы использовать interpreter_wrapper
?
Unsupported ops: Control flow ops and ops that require explicit initialization from resources, like HashTableV2, are not yet supported.
Вы в курсе? - person convolutionBoy   schedule 08.07.2021