Не будет работать в всех условиях. Например, если вы перетасовываете данные и выполняете разделение проверки следующим образом:
fit(x,y,epochs=1, verbose=1, validation_split=0.2, shuffle=True)
Вы будете использовать весь набор данных для обучения, что не соответствует вашим ожиданиям.
Кроме того, , выполнив несколько подгонок, вы сотрете информацию истории (точность, потеря и т. Д. В каждой эпохе), заданную:
model.history
Так что некоторые функции обратного вызова, которые используют эту историю, не будут работать должным образом, например EarlyStopping (исходный код здесь ).
В противном случае он работает, поскольку не работает с оптимизатором keras, как вы можете видеть в исходном коде оптимизаторов keras ( Adadelta optimizer) .
Однако я не рекомендую делать это. Потому что это может привести к ошибкам в дальнейшей разработке. Более чистый способ сделать это - создать собственную функцию обратного вызова с такой задержкой:
import time
class DelayCallback(keras.callbacks.Callback):
def __init__(self,delay_value=10, epoch_to_complete=10):
self.delay_value = delay_value # in second
self.epoch_to_complete = epoch_to_complete
def on_epoch_begin(self, epoch, logs={}):
if (epoch+1) % self.epoch_to_complete == 0:
print("cooling down")
time.sleep(self.delay_value)
return
model.fit(x_train, y_train,
batch_size=32,
epochs=20,
verbose=1, callbacks=[DelayCallback()])