它不适用于所有条件。例如,如果您打乱数据并执行这样的验证拆分:
fit(x,y,epochs=1, verbose=1, validation_split=0.2, shuffle=True)
您将使用整个数据集进行训练,这不是您所期望的。
此外,通过多次拟合,您将删除历史信息(每个时期的准确度、损失等),由以下公式给出:
model.history
所以一些使用此历史记录的回调函数将无法正常工作,例如 EarlyStopping(源代码here)。
否则,它不会像您在 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()])