“Model”对象没有“load_model”属性keras

7

我将尝试加载一个使用以下代码保存的模型:model.save('myModel.h5')

该模型的定义如下:

self.model = VGGFace(input_tensor=input_tensor, include_top=True)

for layer in self.model.layers:
    layer.trainable = False

self.model.get_layer('fc7').trainable = True
last_layer = self.model.get_layer('fc7').output
out = BatchNormalization()(last_layer)
out = Dense(self.n_outputs, activation='softmax', name='fc8')(out)
self.model = Model(input=self.model.input, output=out)

当我尝试使用 model.load_model('myModel.h5') 加载 myModel.h5 文件时,会抛出以下错误:

AttributeError: 'Model' object has no attribute 'load_model'

我猜是因为我没有使用Sequential模型。

那么我该怎么加载我的模型呢?因为看起来model.save('myModel.h5')已经可以工作了。

谢谢!!!

2个回答

15

load_model() 实际上不是模型对象的属性。 load_model() 是从 keras.models 中导入的函数,它接受一个文件名并返回一个模型对象。

你应该像这样使用它:

from keras.models import load_model

model = load_model(path_to_model)

您可以使用 keras.models.load_model(filepath) 来重新实例化您的模型。load_model 还将负责使用保存的训练配置编译模型(除非该模型从未被编译过)。 来源


1
我可以访问整个模型以加载 model.history 吗? - Eric

4
由于sequential没有办法加载完整的模型和优化器等,只能加载权重。如果要在执行了 `model.save('myModel.h5')` 后加载完整的模型,应该使用以下方式加载模型。
import tensorflow as tf
from tensorflow import keras
#...
myModel = tf.keras.models.load_model("myModel.h5")

3
当尝试访问以这种方式加载的模型的历史记录时,仍会出现错误:model.history.history-> AttributeError: 'Sequential'对象没有'history'属性。 - Pesche Helfer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接