что на самом деле model.save () сохраняет в Keras? - PullRequest
2 голосов
/ 09 июля 2019

У меня есть модель Keras, и я тренировал модель с 100 эпохами.

Теперь я получил 0,0085 потерь в эпоху 85, а в последние годы я получил 0,0092.

Мой вопрос:

  1. что сохраняет model.save () в Keras?
  2. Сохраняет ли он веса, полученные за последние годы (т. Е. 100)
  3. Или этосохраняет веса из лучших эпох (т.е. эпохи 85)
  4. Или средние или средние веса из всех 100 эпох?.

Что на самом деле является keras model.save ()предназначен для сохранения веса после завершения 100 эпох?.

Спасибо за объяснение заранее:).

Ответы [ 4 ]

2 голосов
/ 09 июля 2019

model.save() сохранит много деталей о вашем NN.Наиболее важными деталями являются

  1. Архитектура сети, включая измерения (слои входов / выходов, скрытые слои и т. Д.).
  2. Матрицы весов для каждой скрытой единицы в каждом слое и функция активации.и многие другие детали, которые нам, возможно, не понадобятся здесь описывать.

Возвращаясь ко второй части вашего вопроса, когда мы сохраняем обученную модель, будет сохранено значение потерь после последней эпохи.Это означает, что окончательное значение будет меньше или больше по сравнению с предыдущими эпохами, в зависимости от количества указанных вами эпох и от того, насколько близко вы находитесь от overfitting.

Кроме того, число эпох не сохраняется, и это не имеет смысла в большинстве ситуаций, согласно Франсуа Шоле, создателю Keras. см. Этот разговор

Это верно, если вы не активируете опцию callback, которая включает раннюю остановку обучения вашей сети после определенного количества эпох (которые вы назвали лучшимиитерация).см это

2 голосов
/ 09 июля 2019

Мой вопрос в том, что сохраняет model.save (): "Это спасает вес?" он получил из лат эпохи (т. е. 100) "ИЛИ" Это сохраняет вес от лучшая эпоха (т.е. эпоха 85) «ИЛИ» Средние или средние веса из всех 100 Эпохи? ".

Что все сохранено (вес, состояние оптимизатора и т. Д.) Уже упоминалось в других ответах. В вашем случае вес модели в конце 100 эпох сохраняется.

В случае, если вы хотите сохранить лучшую модель (с наименьшими потерями), вам необходимо создать объект обратного вызова ModelCheckPoint и передать его методу fit() через аргумент callbacks.

https://keras.io/callbacks/#ModelCheckpoint

https://keras.io/callbacks/#example-model-checkpoints

2 голосов
/ 09 июля 2019

model.save() сохраняет всю архитектуру, вес и состояние оптимизатора. Эта команда сохраняет детали, необходимые для восстановления вашей модели.

Команда сохранит:

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

Таким образом, вы можете повторно использовать вашу модель, используя keras.models.load_model(filepath), чтобы восстановить ее модель. load_model также позаботится о компиляции модели с использованием сохраненной конфигурации обучения.

См. Пример:

from keras.models import load_model

model.save('my_model.h5')  # creates a HDF5 file 'my_model.h5'
del model  # deletes the existing model

# returns a compiled model
# identical to the previous one
model = load_model('my_model.h5')

Источник: https://keras.io/getting-started/faq/#how-can-i-save-a-keras-model

1 голос
/ 09 июля 2019
  1. Сохраняет вес
  2. Да
  3. Для сохранения весов в лучшую эпоху используйте кусок кода, который я дал ниже
  4. Нет

Что на самом деле keras model.save () предназначен для сохранения весов после завершения 100 эпох?Да, это так, но посмотрите на следующий код для сохранения весов только лучших эпох.

Используйте этот фрагмент кода для:

  1. Сохранение весов только для лучших эпох
  2. Обновление весов после каждой эпохи только при улучшении заданных критериев (val_loss min)
  3. Кроме того, история после каждой эпохи будет сохраняться в файле .csv.

Код

import pandas as pd
from keras.callbacks import EarlyStopping, ModelCheckpoint

#Stop when val_loss is not decreasing
earlyStopping = EarlyStopping(monitor='val_loss', patience=10, verbose=0, mode='min')

#Save the model after every epoch.
checkpointer = ModelCheckpoint(filepath='Model_1_weights.h5', verbose=1, save_best_only=True)

#history variable will save training progress after each epoch 
history = model.fit(X_train, y_train, batch_size=20, epochs=40, validation_data=(X_valid, y_valid), shuffle=True, callbacks=[checkpointer, earlyStopping])
#Save progress of each epoch in .csv file 
hist_df = pd.DataFrame(history.history) 
hist_csv_file = 'History_Model_1.csv'
with open(hist_csv_file, mode='w') as f:
    hist_df.to_csv(f)

Ссылка: https://keras.io/callbacks/#ModelCheckpoint

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