首页 > 解决方案 > 无法使用 RectifiedAdam 优化器加载 Keras 模型

问题描述

尝试使用加载 Keras 模型tf.keras.models.load_model时出现以下错误:

import tensorflow as tf
from tensorflow_addons.optimizers import RectifiedAdam
model = tf.keras.models.load_model('model', custom_objects = {'RectifiedAdam' : RectifiedAdam})

错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/mylib/python3.7/site-packages/tensorflow_core/python/keras/saving/save.py", line 150, in load_model
    return saved_model_load.load(filepath, compile)
  File "/mylib/python3.7/site-packages/tensorflow_core/python/keras/saving/saved_model/load.py", line 99, in load
    training_config))
  File "/mylib/python3.7/site-packages/tensorflow_core/python/keras/saving/saving_utils.py", line 229, in compile_args_from_training_config
    optimizer_config, custom_objects=custom_objects)
  File "/mylib/python3.7/site-packages/tensorflow_core/python/keras/optimizers.py", line 819, in deserialize
    printable_module_name='optimizer')
  File "/mylib/python3.7/site-packages/tensorflow_core/python/keras/utils/generic_utils.py", line 292, in deserialize_keras_object
    config, module_objects, custom_objects, printable_module_name)
  File "/mylib/python3.7/site-packages/tensorflow_core/python/keras/utils/generic_utils.py", line 250, in class_and_config_for_serialized_keras_object
    raise ValueError('Unknown ' + printable_module_name + ': ' + class_name)
ValueError: Unknown optimizer: RectifiedAdam

我可以使用 compile 加载模型为 False tf.keras.models.load_model('model', compile=False),然后使用 RectifiedAdam 优化器再次编译它(如此处建议:https ://stackoverflow.com/a/56565801 )——但这并不理想......

所以有什么想法,我做错了什么?

标签: tensorflowkerastensorflow2.0keras-layertf.keras

解决方案


解决此问题的一个快速技巧是手动分配RectifiedAdam给 Tensorflow 命名空间中的对象:

import tensorflow as tf
from tensorflow_addons.optimizers import RectifiedAdam

tf.keras.optimizers.RectifiedAdam = RectifiedAdam
...

推荐阅读