Невозможно сохранить и загрузить модель Keras - PullRequest
0 голосов
/ 23 октября 2019
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'), как вы можете видеть выше. Но это не похоже на работу. Затем, когда я пытаюсь загрузить уже существующий файл first_try.h5, он тоже не работает from keras.models import load_model model = load_model('first_try.h5') Это выдает ошибку ValueError: Cannot create group in read-only mode.

Ответы [ 2 ]

1 голос
/ 23 октября 2019

сохраните как:

     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()
1 голос
/ 23 октября 2019

вы можете сохранить и загрузить модель keras двумя способами

  1. вы можете сохранить веса и архитектуру в одном файле .h5

    model.save('final_try.h5')
    

    , а затем легко загрузитьчто

    model = load_model('first_try.h5')
    
  2. вы можете сохранять свои веса в .h5 и свою архитектуру в файле .json отдельно. поэтому ошибка

    ValueError: Cannot create group in read-only mode.
    

    означает, что вы пытаетесь загрузить только веса модели без ее архитектуры. С помощью этого метода вы должны загрузить архитектуру json модели или определить ее

    model.load_weights('model_weights.h5')
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...