#1957·autokeras

在早期 Autokeras 版本中训练的保存模型加载时需要紧急帮助

作者: dsbanerjee90创建于 2025年11月18日更新于 2026年1月21日

Hi, 我们在加载使用较早版本的 Autokeras 训练的模型时遇到了问题。 我们使用 1.1.0 (可能是 1.0.20) 训练了我们的模型, Tensorflow TF: 2.8, Python: 3.8/3.9。 我们的模型训练如下: "import autokeras as ak from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X_t_v, y_t_v, test_size=0.2) #, random_state=42) regressor = ak.StructuredDataRegressor( overwrite=True, max_trials=200 # 尝试不同模型的次数 ) " 我们将模型保存如下: `model.save("TRAINED/best_model_autokeras", save_format='tf')` 在 best_model_autokeras 中包含以下文件: assets, fingerprint.pb, keras_metadata.pb, saved_model.pb, variables。 现在我们尝试如下加载模型: "from keras.models import load_model import autokeras as ak model_newscaled = load_model('TRAINED/best_model_autokeras/') " 但出现了以下错误: "--------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) Cell In[3], line 1 -> 1 model_newscaled = load_model('best_model_autokeras/') File ~/miniconda3/envs/autokeras3/lib/python3.8/site-packages/keras/utils/traceback_utils.py:67, in filter_traceback.<locals>.error_handler(*args, **kwargs) 65 except Exception as e: # pylint: disable=broad-except 66 filtered_tb = _process_traceback_frames(e.__traceback__) -> 67 raise e.with_traceback(filtered_tb) from None 68 finally: 69 del filtered_tb File ~/miniconda3/envs/autokeras3/lib/python3.8/site-packages/keras/saving/saved_model/load.py:532, in KerasObjectLoader._revive_layer_or_model_from_config(self, metadata, node_id) 530 builtin_layer = layers_module.get_builtin_layer(class_name) 531 if builtin_layer: -> 532 raise RuntimeError( 533 f'Unable to restore object of class \'{class_name}\' likely due to ' 534 f'name conflict with built-in Keras class \'{builtin_layer}\'. To ' 535 'override the built-in Keras definition of the object, decorate ' 536 'your class with `@keras.utils.register_keras_serializable` and ' 537 'include that file in your program, or pass your class in a ' 538 'keras.utils.CustomObjectScope` that wraps this load call.') from e 539 else: 540 raise RuntimeError: Unable to restore object of class 'Normalization' likely due to name conflict with built-in Keras class '<class 'keras.layers.preprocessing.normalization.Normalization'>'. To override the built-in Keras definition of the object, decorate your class with `@keras.utils.register_keras_serializable` and include that file in your program, or pass your class in a `keras.utils.CustomObjectScope` that wraps this load call. " 请帮助我解决这个问题。 我们有一篇文章正在审阅中,我们需要重新运行一个实验,但我们对此感到困惑。

内容来源: keras-team/autokeras