【问题标题】:Train keras model from generator, get the feedback for each epoch and utilize an Early stopping algorithm从生成器训练 keras 模型,获取每个 epoch 的反馈并利用 Early stop 算法
【发布时间】:2018-09-05 08:59:05
【问题描述】:

在训练模型时,我想在 Keras 中做三件事:

  1. 使用生成器
  2. 获取每个 epoch 的历史反馈
  3. 使用提前停止

一个 sn-p 看起来像这样:

loss = []
acc = []
val_loss = []
val_acc = []

# Outer loop needed for getting the history of each epoch
for i in range(0,100):
    hist = model.fit_generator(train_data.flow(x_train_np,y_train_np,batch_size=8),
                               validation_data = validation_data.flow(x_val_np,y_val_np,batch_size=8),
                               epochs=1,
                               samples_per_epoch=len(x_train_np),
                               callbacks=[earlystop])
    loss.append(hist.history['loss'])
    acc.append(hist.history['acc'])
    val_loss.append(hist.history['val_loss'])
    val_acc.append(hist.history['val_acc'])

需要循环来获取每个 epoch 的反馈。但是,这将导致在 earlystopping 停止之后继续训练。

那么有没有办法知道循环内部何时发生提前停止,以便我可以手动中断它?

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    使用fit_generator()steps_per_epoch 参数。这使您可以将 epochs >1 设置为不再需要循环。

    现在提前停止和 hist 将与在静态数据集上正常调用 fit() 完全一致。

    为此,您的生成器需要在达到一个时期结束后继续工作(意思是每个时期的步数定义的批次数)

    【讨论】:

      猜你喜欢
      • 2020-10-17
      • 2022-01-22
      • 2022-01-19
      • 2019-05-28
      • 2019-05-16
      • 2012-10-09
      • 2020-05-28
      • 2018-10-12
      • 2017-06-22
      相关资源
      最近更新 更多