Теперь, после того, как я на некоторое время проведу тренировку l oop, если я решу изменить скорость обучения на .002, мне придется запустить все коды, которые относятся к моделям (структура модели, затем оптимизация и т. д. c)?
Вы можете обновить скорость обучения либо во время тренировки, либо после загрузки вашей модели.
Помните, что обучение Скорость не принадлежит архитектуре модели, она относится к оптимизатору (который назначается при компиляции модели). Скорость обучения - это гиперпараметр, который регулирует величину обновления веса во время градиентного спуска (представленную как alpha ниже):
![enter image description here](https://i.stack.imgur.com/NZEkF.png)
Таким образом, после начального обучения вы можете загрузить свою (сохраненную) модель, обновить оптимизатор с новой скоростью обучения (и, возможно, назначить пользовательский объект компилятору) и продолжить обучение. Имейте в виду, что замена самого оптимизатора после длительного обучения вашей модели может привести к получению плохих результатов точности, поскольку теперь вашей модели необходимо выполнить повторную калибровку для расчета веса нового оптимизатора.
Как это сделать Я загружаю из предыдущего состояния с того момента, когда я остановил тренировку?
В Keras у вас есть выбор сохранения / загрузки всей модели (которая включает архитектуру, веса, состояние оптимизатора или только веса). или только архитектура (источник) .
Для сохранения / загрузки всей модели :
from keras.models import load_model
model.save('my_model.h5')
model = load_model('my_model.h5')
Для сохранения / загрузки только модели weights :
model.save_weights('my_model_weights.h5')
model.load_weights('my_model_weights.h5')
Вы также можете назначить пользовательский объект во время загрузки модели:
model = load_model(filepath, custom_objects={'loss': custom_loss})
Другой вопрос, если я перезапущу P C и запустите ячейку jupyter с кодами контрольных точек, которые я здесь ранее поделился. Заменит ли это ранее сохраненный файл?
Зависит от пути к файлу, используемого в контрольной точке: «если filepath равен весам. {эпоха» : 02d} - {val_loss: .2f} .hdf5, тогда контрольные точки модели будут сохранены с номером эпохи и потерей проверки в имени файла ". Таким образом, если вы используете уникальное форматирование для пути к файлу, вы можете избежать перезаписи ранее сохраненных моделей. source
Какой идеальный способ загрузить сохраненные файлы и веса и возобновить обучение оттуда?
Пример:
# Define model
model = keras.models.Sequential()
model.add(L.InputLayer([None],dtype='int32'))
model.add(L.Embedding(len(all_words),50))
model.add(keras.layers.Bidirectional(L.SimpleRNN(5,return_sequences=True)))
# Define softmax layer for every time step (hence TimeDistributed layer)
stepwise_dense = L.Dense(len(all_words),activation='softmax')
stepwise_dense = L.TimeDistributed(stepwise_dense)
model.add(stepwise_dense)
import keras.backend as K
# compile model with adam optimizer
model.compile('adam','categorical_crossentropy')
# print learning rate
print(f"Model learning rate is: {K.get_value(model.optimizer.lr):.3f}")
# train model
model.fit_generator(generate_batches(train_data), len(train_data)/BATCH_SIZE,
callbacks=[EvaluateAccuracy()], epochs=1)
# save model (weights, architecture, optimizer state)
model.save('my_model.h5')
# delete existing model
del model
Результаты
Model learning rate is: 0.001
Epoch 1/1
1341/1343 [============================>.] - ETA: 0s - loss: 0.4288
Measuring validation accuracy...
Validation accuracy: 0.93138
from keras.models import load_model
# create new adam optimizer with le-04 learning rate (previous: 1e-03)
adam = keras.optimizers.Adam(lr=1e-4)
# load model
model = load_model('my_model.h5', compile=False)
# compile model and print new learning rate
model.compile(adam, 'categorical_crossentropy')
print(f"Model learning rate is: {K.get_value(model.optimizer.lr):.4f}")
# train model for 3 more epochs with new learning rate
print("Training model: ")
model.fit_generator(generate_batches(train_data),len(train_data)/BATCH_SIZE,
callbacks=[EvaluateAccuracy()], epochs=3,)
Результаты :
Model learning rate is: 0.0001
Training model:
Epoch 1/3
1342/1343 [============================>.] - ETA: 0s - loss: 0.0885
Measuring validation accuracy...
Validation accuracy: 0.93568
1344/1343 [==============================] - 41s - loss: 0.0885
Epoch 2/3
1342/1343 [============================>.] - ETA: 0s - loss: 0.0768
Measuring validation accuracy...
Validation accuracy: 0.93925
1344/1343 [==============================] - 39s - loss: 0.0768
Epoch 3/3
1343/1343 [============================>.] - ETA: 0s - loss: 0.0701
Measuring validation accuracy...
Validation accuracy: 0.94180
Больше информации на FAQ по Keras для конкретных c случаев.