【问题标题】:Is it ok to run same model multiple times?可以多次运行同一个模型吗?
【发布时间】:2019-11-12 00:55:28
【问题描述】:

我的问题是我运行 keras 模型 100 个 epochs(给定 epochs=100)并停止一段时间以冷却 CPU 和 GPU。 比我再次跑了 100 个 epochs 并且损失从前 100 个 epochs 停止的地方开始减少。 它是否适用于所有条件。 就像如果有 1000 个 epoch 我想训练我的模型,我可以在每 100 个 epoch 后停下来等到我的 cpu 和 GPU 冷却并运行接下来的 100 个 epoch。 我可以这样做吗?

【问题讨论】:

    标签: python-3.x keras jupyter-notebook


    【解决方案1】:

    它不适用于所有条件。例如,如果您打乱数据并执行这样的验证拆分:

    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()])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多