【问题标题】:'Model' object has no attribute 'load_model' keras'Model' 对象没有属性 'load_model' keras
【发布时间】:2017-09-10 17:17:28
【问题描述】:

我正在尝试加载保存时使用的模型: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') 似乎有效。

谢谢!!!!

【问题讨论】:

    标签: tensorflow deep-learning keras conv-neural-network


    【解决方案1】:

    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 还将负责使用保存的训练配置编译模型(除非模型从未被编译过)。 from source

    【讨论】:

    • 我可以访问model.history 加载整个模型对吗?
    【解决方案2】:

    原因是顺序无法加载完整模型以及优化器等仅权重。要在执行model.save('myModel.h5') 后加载完整的模型,您应该加载模型

    import tensorflow as tf
    from tensorflow import keras
    #...
    myModel = tf.keras.models.load_model("myModel.h5")
    

    【讨论】:

    • 尝试访问以这种方式加载的模型的历史记录时仍然会引发错误:model.history.history -> AttributeError: 'Sequential' object has no attribute 'history'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2022-12-28
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    相关资源
    最近更新 更多