керас сохраняет веса модели в один файл - PullRequest
1 голос
/ 19 февраля 2020

у меня есть модель keras, которая сохраняет веса каждой эпохи, как я могу сделать в один файл

это строка, которая сохраняет режим

, и у меня есть 50 эпох, я получу 50 веса, которые я хочу только 1 сохранить все в одном файле

>     model.save_weights('checkpoint_epoch_{}.hdf5'.format(k))

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

желаемый вес

checkpoint.h5

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Вам не нужны веса в одном файле, вы можете сохранить всю модель и использовать TFLiteConverter для преобразования вашей модели tf.keras или tf в lite напрямую из файл .h5.

 import tensorflow as tf
 from tf.keras.models import load_model

 model=load_model("model.h5")

 # Convert the model.
 converter = tf.lite.TFLiteConverter.from_keras_model(model)
 tflite_model = converter.convert()

Если у вас построена модель Keras, вы можете сохранить модель в каждую эпоху во время обучения, используя обратный вызов , называемый ModelCheckpoint.

Обратный вызов - это набор функций, которые должны применяться на определенных этапах процедуры обучения. Вы можете использовать обратные вызовы, чтобы получить представление о внутренних состояниях и статистике модели во время обучения. Вы можете передать список обратных вызовов (в качестве обратных вызовов аргумента ключевого слова) методу .fit () классов Sequential или Model. Соответствующие методы обратных вызовов будут вызываться на каждом этапе обучения.

from keras.callbacks import ModelCheckpoint


'''
saves the model weights after each epoch
'''
checkpointer = ModelCheckpoint(filepath='model-{epoch:02d}-{val_loss:.2f}.h5', verbose=1)
model.fit(x_train, y_train, batch_size=batchsize, epochs=epochs, verbose=0, validation_data=(X_test, Y_test), callbacks=[checkpointer])

Затем модель будет сохранена с номером эпохи и потерей проверки в имени файла

ТАК, что вы можете сохранить модель, а затем загрузить ее, как описано выше.

0 голосов
/ 07 марта 2020

Почему вы хотите сохранить вес для каждой эпохи? Обычно вы сохраняете веса для эпохи с наименьшими потерями при проверке. Затем, после завершения обучения, вы загружаете эти веса в свою модель, чтобы делать прогнозы. Обратный вызов Keras ModelCheckpoint сделает это за вас. Вы можете сохранить только веса или сохранить всю модель. Что мне не нравится в этом обратном вызове, так это то, что он сохраняет результат в файл, а затем вам нужно прочитать данные из файла. Если вы сохраните всю модель, перезагрузка модели может занять много времени. Чтобы избежать этого, я написал собственный обратный вызов, который сохраняет веса с наименьшими потерями при проверке в переменную класса. Код здесь . Переменная save_best_weights.best_weights хранит в ней веса, поэтому вы можете использовать model.set_weights (save_best_weights.best_weights) для прогнозирования.

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