Issue
I am trying to save and re-load a KerasClassifier model using the below code:
def baseline_model():
model = Sequential()
model.add(Dense(8, input_dim=80, activation='relu'))
model.add(Dense(4, activation='softmax')) # output layer, with number of classes
model.compile(loss='categorical_crossentropy', optimizer=keras.optimizers.Adam(lr=0.01), metrics=['accuracy'])
return model
model.model.save('model')
#re-load model
model2 = KerasClassifier(build_fn=baseline_model, epochs=100)
model2.model = load_model('model')
preds = model2.predict(testX)
The model seems to save ok but when I re-load it and try to generate predictions, I get the following error: 'KerasClassifier' object has no attribute 'classes_'
I'm following the steps in the documentation so I'm not sure why this isn't working. I did fit the model and use it successfully for prediction prior to saving it.
** Update: I also tried leaving out the line:
model2 = KerasClassifier(build_fn=baseline_model, epochs=100)
and just running
model2.model = load_model('model')
but then I get
name 'model2' is not defined
Solution
If you need to just reload the model and generate predictions from it, then you don't need the KerasClassifier
as it justs converts your Keras model to a scikit-learn
model. So you can remove the lines:
model2 = KerasClassifier(build_fn=baseline_model, epochs=100)
model2.model = load_model('model')
and instead just write this:
model2 = load_model('model')
You can then run your model2.predict(testX)
as normal.
Answered By - DhyanilMehta
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.