加载FaceNet模型遇ValueError,求替代keras_facenet的解决方法
加载FaceNet Keras模型时出现「bad marshal data」错误
问题代码
尝试直接加载模型的代码:
from keras.models import load_model load_model('facenet_keras.h5')
报错信息
运行后触发以下错误:
ValueError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_5776\2622147163.py in ----> 1 load_model('facenet_keras.h5') ~\AppData\Roaming\Python\Python39\site-packages\keras\utils\traceback_utils.py in error_handler(*args, **kwargs) 68 # To get the full stack trace, call: 69 # <code>tf.debugging.disable_traceback_filtering()</code> ---> 70 raise e.with_traceback(filtered_tb) from None 71 finally: 72 del filtered_tb ~\AppData\Roaming\Python\Python39\site-packages\keras\utils\generic_utils.py in func_load(code, defaults, closure, globs) 101 except (UnicodeEncodeError, binascii.Error): 102 raw_code = code.encode("raw_unicode_escape") ---> 103 code = marshal.loads(raw_code) 104 if globs is None: 105 globs = globals() ValueError: bad marshal data (unknown type code)
已尝试的替代方案(不想使用)
曾用过第三方库直接调用,但不符合需求:
from keras_facenet import FaceNet embedder = FaceNet()
环境版本
- Python:3.9.3
- TensorFlow:2.11.0
- Keras:2.11.0
可行解决方案
根据V.M的回答,通过手动定义模型结构再加载权重的方式可以解决:
model = InceptionResNetV1( input_shape=(None, None, 3), classes=512, ) model.load_weights('20180402-114759.h5')
内容的提问来源于stack exchange,提问作者primo
相关产品推荐
相关产品推荐

