#tensorflow #keras #tensorflow-lite
#тензорный поток #keras #тензорный поток-облегченный
Вопрос:
Я использую tensorflow версии 2.3.1 и keras 2.4.3 Я обучил модель keras, где после обучения я попытался преобразовать ее в модель tflite, используя следующие команды:
from keras.models import load_model
import tensorflow as tf
model = load_model("model.h5")
converter = tf.lite.TFLiteConverter.from_saved_model(model)
Я получаю эту ошибку:
TypeError Traceback (most recent call last)
<ipython-input-4-759f94851ff5> in <module>
----> 1 converter = tf.lite.TFLiteConverter.from_saved_model(model)
C:ProgramDataAnaconda3libsite-packagestensorflowlitepythonlite.py in from_saved_model(cls, saved_model_dir, signature_keys, tags)
1026
1027 with context.eager_mode():
-> 1028 saved_model = _load(saved_model_dir, tags)
1029 if not signature_keys:
1030 signature_keys = saved_model.signatures
C:ProgramDataAnaconda3libsite-packagestensorflowpythonsaved_modelload.py in load(export_dir, tags, options)
601 ValueError: If `tags` don't match a MetaGraph in the SavedModel.
602 """
--> 603 return load_internal(export_dir, tags, options)
604
605
C:ProgramDataAnaconda3libsite-packagestensorflowpythonsaved_modelload.py in load_internal(export_dir, tags, options, loader_cls)
612 tags = nest.flatten(tags)
613 saved_model_proto, debug_info = (
--> 614 loader_impl.parse_saved_model_with_debug_info(export_dir))
615
616 if (len(saved_model_proto.meta_graphs) == 1 and
C:ProgramDataAnaconda3libsite-packagestensorflowpythonsaved_modelloader_impl.py in parse_saved_model_with_debug_info(export_dir)
54 parsed. Missing graph debug info file is fine.
55 """
---> 56 saved_model = _parse_saved_model(export_dir)
57
58 debug_info_path = os.path.join(
C:ProgramDataAnaconda3libsite-packagestensorflowpythonsaved_modelloader_impl.py in parse_saved_model(export_dir)
84 # Build the path to the SavedModel in pbtxt format.
85 path_to_pbtxt = os.path.join(
---> 86 compat.as_bytes(export_dir),
87 compat.as_bytes(constants.SAVED_MODEL_FILENAME_PBTXT))
88 # Build the path to the SavedModel in pb format.
C:ProgramDataAnaconda3libsite-packagestensorflowpythonutilcompat.py in as_bytes(bytes_or_text, encoding)
84 return bytes_or_text
85 else:
---> 86 raise TypeError('Expected binary or unicode string, got %r' %
87 (bytes_or_text,))
88
TypeError: Expected binary or unicode string, got <tensorflow.python.keras.engine.functional.Functional object at 0x0000022EC9005250>
Я понятия не имею, как решить эту проблему и почему это произошло. Есть какие-нибудь предложения по решению этой проблемы?
Комментарии:
1. Вы не должны смешивать keras и tensorflow таким образом. Если вы хотите использовать keras, вы должны использовать из
tensorflow.keras import
Ответ №1:
Вы пытаетесь использовать метод преобразования из saved_model
protobuf с моделью keras. Ваш метод tf.lite.TFLiteConverter.from_keras_model(model)
:
import tensorflow as tf
from tensorflow import keras
model = keras.models.load_model('path/to/location')
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
with open('model.tflite', 'wb') as f:
f.write(tflite_model)
Подробности смотрите здесь