可以多次运行同一模型吗?

帕拉

我的问题是我为100个时代运行了一个keras模型(给定时代= 100),并停止了一段时间以冷却CPU和GPU。我又跑了100个纪元,而损失从前100个纪元停止的地方开始减少。它在所有条件下都能工作吗?就像我要训练模型的时间为1000个周期一样,我是否可以每隔100个周期停止一次,然后等我的CPU和GPU冷却并运行下一个100个周期。我可以这样做吗?

西蒙·德莱考特

并非在所有情况下都有效。例如,如果您对数据进行混洗并执行如下所示的验证拆分:

fit(x,y,epochs=1, verbose=1, validation_split=0.2, shuffle=True)

您将使用整个数据集进行训练,这不是您期望的。

此外,通过进行多次拟合,您将擦除历史记录信息(每个时期的准确性,损失等),其信息如下:

model.history

因此,某些使用此历史记录的回调函数将无法正常工作,例如EarlyStopping(此处为源代码)。

否则,它可以正常工作,因为它不会像keras优化器(Adadelta优化器)的源代码中所看到的那样混乱

但是,我不建议您这样做。因为这可能会导致将来开发中的错误。一种更干净的方法是创建一个延迟如下的自定义回调函数:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章