Сохранение весов модели нейросети
В продолжении статьи Создаём нейросеть на Python, Итак сеть создали, натренировали. А что делать чтобы решение можно было определять по картинке лето или зима, не обучая каждый раз модель заново? Ну так ведь можно просто сохранить полученные веса нейросети в файл, А затем уже их загружать в случае необходимости.
В Tensotflow уже есть встроенный функционал для сохранения весов в файл. Для этого используется функция вызова кэлбека после прохождения каждого шага обучения. В моём случае промежуточные модели обучения не нужны, потому параметр save_freq делаю равным количеству итераций обучения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
traning_model_save=base_dir+"\save_model\cp.ckpt" .... EPOCHS = 10 print("- настраиваем кэлбеки для сохранения натренированной модели") # Создаем колбек для сохранения контрольной точки cp_callback = tf.keras.callbacks.ModelCheckpoint(traning_model_save, save_weights_only=True, save_freq=EPOCHS, verbose=1) print("- тренируем модель") history = model.fit( train_data_gen, steps_per_epoch=int(np.ceil(total_train / float(BATCH_SIZE))), epochs=EPOCHS, validation_data=val_data_gen, validation_steps=int(np.ceil(total_val / float(BATCH_SIZE))), callbacks = [cp_callback] # вызываем кэлбек после каждого шага обучения ) |
Так-же можно сохранять не только веса, но и всю модель целиком:
1 |
model.save('model.h5') |