Сохранение и загрузка грузов в keras

Im пытается сохранить и загрузить весы из модели, которую я обучил.

код im, используемый для сохранения модели.

TensorBoard(log_dir='/output')
model.fit_generator(image_a_b_gen(batch_size), steps_per_epoch=1, epochs=1)
model.save_weights('model.hdf5')
model.save_weights('myModel.h5')

позвольте мне знать, если это неправильный способ сделать это,или если есть лучший способ сделать это.

но когда я пытаюсь загрузить их,с помощью этого,

from keras.models import load_model
model = load_model('myModel.h5')

но я получаю эту ошибку:


ValueError                                Traceback (most recent call 
last)
<ipython-input-7-27d58dc8bb48> in <module>()
      1 from keras.models import load_model
----> 2 model = load_model('myModel.h5')

/home/decentmakeover2/anaconda3/lib/python3.5/site-
packages/keras/models.py in load_model(filepath, custom_objects, compile)
    235         model_config = f.attrs.get('model_config')
    236         if model_config is None:
--> 237             raise ValueError('No model found in config file.')
    238         model_config = json.loads(model_config.decode('utf-8'))
    239         model = model_from_config(model_config, 
custom_objects=custom_objects)

ValueError: No model found in config file.

любые предложения о том, что я могу делать неправильно? Заранее спасибо.

2 ответов


вот видео YouTube, которое объясняет, что именно вы хотите сделать:сохранить и загрузить модель Keras

существует три различных метода сохранения, которые Keras делает доступными. Они описаны в видеосвязи выше (с примерами), а также ниже.

во-первых, причина, по которой вы получаете ошибку, заключается в том, что вы вызываете load_model неправильно.

для сохранения и загрузки Весов модели, вы бы сначала использовать

model.save_weights('my_model_weights.h5')

для сохранения веса, как вы показали. Чтобы загрузить веса, вам сначала нужно будет построить свою модель, а затем вызвать load_weights на модели, как и в

model.load_weights('my_model_weights.h5')

другой метод экономии-это model.save(filepath). Это save функция экономит:

  • архитектура модели, позволяющая воссоздать модель.
  • веса модели.
  • конфигурация обучения (потеря, оптимизатор).
  • в состояние оптимизатора, позволяющее возобновить обучение именно там, где вы остановились.

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

from keras.models import load_model
new_model = load_model(filepath)'

и наконец, model.to_json(), сохраняет только архитектуру модели. Чтобы загрузить архитектуру, вы должны использовать

from keras.models import model_from_json
model = model_from_json(json_string)

загрузки весом, сначала вам нужно иметь модель. Должно быть:

existingModel.save_weights('weightsfile.h5')
existingModel.load_weights('weightsfile.h5')     

Если вы хотите сохранить и загрузить всю модель (часто это не работает и я не знаю, почему):

model.save_model('filename')
model = load_model('filename')