Сохранение и загрузка грузов в керасе
Я пытаюсь сохранить и загрузить веса из модели, которую я обучил.
Код, который я использую для сохранения модели, есть.
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
Существует три различных метода сохранения, которые предоставляет Керас. Они описаны в видеосвязи выше (с примерами), а также ниже. Во-первых, причина, по которой вы получаете ошибку, заключается в том, что вы неправильно вызываете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')
Comments