Abh*_*ani 6 python deep-learning keras keras-layer
我有一个保存模型使用model.save().我正在尝试重新加载模型并添加几个层并调整一些超参数,但是,它会抛出AttributeError.
模型加载使用load_model().
我想我不知道如何将图层添加到已保存的图层.如果有人可以在这里指导我,那将会很棒.我是深度学习和使用keras的新手,所以我的请求可能是愚蠢的.
片段:
prev_model = load_model('final_model.h5') # loading the previously saved model.
prev_model.add(Dense(256,activation='relu'))
prev_model.add(Dropout(0.5))
prev_model.add(Dense(1,activation='sigmoid'))
model = Model(inputs=prev_model.input, outputs=prev_model(prev_model.output))
Run Code Online (Sandbox Code Playgroud)
它抛出的错误:
Traceback (most recent call last):
File "image_classifier_3.py", line 39, in <module>
prev_model.add(Dense(256,activation='relu'))
AttributeError: 'Model' object has no attribute 'add'
Run Code Online (Sandbox Code Playgroud)
我知道添加图层适用于新的Sequential()模型,但我们如何添加到现有的已保存模型?
这是因为加载的模型是函数类型而不是顺序模型.因此,您必须使用此处所述的功能API :( https://keras.io/getting-started/functional-api-guide/).
在一天结束时,正确的功能是这样的:
fc = Dense(256,activation='relu')(prev_model)
drop = Dropout(0.5)(fc)
fc2 = Dense(1,activation='sigmoid')(drop)
model = Model(inputs=prev_model.input, outputs=fc2)
Run Code Online (Sandbox Code Playgroud)
该add方法仅存在于顺序模型(Sequential类)中,这是更强大但复杂的功能模型(Model类)的更简单的接口.load_model将始终返回一个Model实例,这是最通用的类.
您可以查看示例以了解如何组合不同的模型,但最终的想法是,其Model行为与任何其他层非常相似.所以你应该能够做到:
prev_model = load_model('final_model.h5') # loading the previously saved model.
new_model = Sequential()
new_model.add(prev_model)
new_model.add(Dense(256,activation='relu'))
new_model.add(Dropout(0.5))
new_model.add(Dense(1,activation='sigmoid'))
new_model.compile(...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7388 次 |
| 最近记录: |