[英]Unable to save and load Keras model
model = Sequential()
model.add(Conv2D(16, (3, 3), input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dense(3))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
...
history = model.fit_generator(
train_generator,
steps_per_epoch=number_training_samples // batch_size,
epochs=epochs,
validation_data=validation_generator,
validation_steps=number_validation_samples // batch_size)
model.save('last_try.h5')
如上所示,我嘗試使用model.save('final_try.h5')
保存我的 model 。 但這似乎不起作用。 然后,當我嘗試加載預先存在的 first_try.h5 時,它也無法from keras.models import load_model
model = load_model('first_try.h5')
這給我錯誤ValueError: Cannot create group in read-only mode.
您可以通過2種方法保存和加載keras model
您可以將權重和架構保存在 one.h5 文件中
model.save('final_try.h5')
然后輕松加載
model = load_model('first_try.h5')
您可以將您的權重保存在.h5 中,並將您的架構保存在.json 文件中。 所以錯誤,
ValueError: Cannot create group in read-only mode.
意味着您正在嘗試僅加載 model 的重量而沒有其架構。 使用此方法,您必須加載 model 的 json 架構或定義它
model.load_weights('model_weights.h5')
像這樣保存它:
model.save('model.h5')
model_json = model.to_json()
with open("model.json", "w") as json_file:
json_file.write(model_json)
然后為了有效地將其加載到應用程序中,將其設置為如下全局,以便它不會一次又一次地加載:
def load_model():
global model
json_file = open('model.json', 'r')
model_json = json_file.read()
model = model_from_json(model_json)
model.load_weights("model.h5")
model._make_predict_function()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.