Я тренирую модель CNN, используя керасы.
После окончания каждой эпохи я сохраняю веса в качестве контрольных точек, если точность проверки повысилась.
from keras.callbacks import ModelCheckpoint
checkpoint = ModelCheckpoint(checkpoint_path, monitor='val_accuracy', mode='max',
save_best_only=True, verbose=1)
callbacks = [checkpoint]
#load checkpoints if existing
import os
num_of_epochs = 65
epochs_done = 0
if(os.path.exists(checkpoint_path)):
model.load_weights(checkpoint_path)
num_of_epochs = num_of_epochs - epochs_done
print('checkpoints loaded')
При перезапуске Тренировка после остановки, вот как выглядит мой первый результат за эпоху.
Epoch 1/65
425/425 [==============================] - 224s 526ms/step - loss: 2.1739 - accuracy: 0.2939 - val_loss: 2.1655 - val_accuracy: 0.2985
Epoch 00001: val_accuracy improved from -inf to 0.29846, saving model to checkpoints-finetuning.hdf5
Я заметил, что это происходило в первую эпоху каждый раз, когда я возобновляю тренировку. Почему это происходит? Перезаписывается ли мой файл контрольных точек худшими точными весами при каждом перезапуске?