Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 如何使用自定义优化器加载keras保存的模型_Tensorflow_Keras_Deep Learning_Keras Layer_Keras 2 - Fatal编程技术网

Tensorflow 如何使用自定义优化器加载keras保存的模型

Tensorflow 如何使用自定义优化器加载keras保存的模型,tensorflow,keras,deep-learning,keras-layer,keras-2,Tensorflow,Keras,Deep Learning,Keras Layer,Keras 2,我已经编译并训练了一个带有自定义优化器的keras模型。我保存了模型,但是当我尝试加载模型时,它抛出一个错误,声明ValueError:Unknown optimizer:MyOptimizer。我试图将MyOptimizer作为自定义对象传递,例如:models.load\u model('myModel.h5',custom\u objects={'optimizer':MyOptimizer}),但它仍然抛出一个错误。如何加载带有自定义对象的keras模型?我遇到了相同的问题:) 我使用m

我已经编译并训练了一个带有自定义优化器的keras模型。我保存了模型,但是当我尝试加载模型时,它抛出一个错误,声明
ValueError:Unknown optimizer:MyOptimizer
。我试图将MyOptimizer作为自定义对象传递,例如:
models.load\u model('myModel.h5',custom\u objects={'optimizer':MyOptimizer})
,但它仍然抛出一个错误。如何加载带有自定义对象的keras模型?

我遇到了相同的问题:)

我使用
models.load\u model('myModel.h5',compile=False)
加载模型,从而使其正常工作

来自keras:

如果在保存的模型中找到了优化器,则该模型已编译。否则,将解压缩模型并显示警告。当
compile
设置为False时,编译将在没有任何警告的情况下忽略


加载未编译的模型后,我可以使用自定义优化器再次编译它。

在您的情况下,必须使用优化器类的名称作为自定义对象字典中的键,因为优化器将是“MyOptimizer”对象

models.load_model('myModel.h5', custom_objects={'MyOptimizer': MyOptimizer})

我也有同样的问题。然而,在我的模型中有两个不同的自定义对象。一个是我的优化器,另一个是自定义层。因此,我解决了我的问题如下:

my_loaded_model = tf.keras.models.load_model('my_models_name.h5', custom_objects={'KerasLayer':hub.KerasLayer , 'AdamWeightDecay': optimizer})

顺便说一句,您不需要仅为推理而编译