【问题标题】:Number of epochs to be used in a Keras sequential model在 Keras 顺序模型中使用的 epoch 数
【发布时间】:2019-11-08 22:09:36
【问题描述】:

我正在构建一个 Keras 顺序模型来进行二值图像分类。现在,当我使用 70 到 80 个 epoch 时,我开始获得良好的验证准确度 (81%)。但有人告诉我,这是一个非常大的数字,可用于影响网络性能的时期。

我的问题是:我不应该超过的 epoch 数量是否有限,请注意我有 2000 个训练图像和 800 个验证图像。

【问题讨论】:

标签: python keras conv-neural-network


【解决方案1】:

如果 epoch 的数量非常多,你的模型可能会过拟合,你的训练准确率会达到 100%。在这种方法中,您可以绘制训练和验证数据的错误率。横轴是历元数,纵轴是错误率。当验证数据的错误率最小时,您应该停止训练。

您需要在正则化参数之间进行权衡。深度学习的主要问题是模型过拟合。使用了各种正则化技术,如

i) 减少批量大小

ii) 数据增强(仅当您的数据不多样化时)

iii) 批量标准化

iv) 降低架构的复杂性(主要是卷积层)

v) 引入 dropout 层(仅当您使用任何密集层时)

vi) 降低学习率。

vii) 迁移学习

批量大小与时代的权衡非常重要。它还取决于您的数据,并且因应用程序而异。在这种情况下,您必须稍微处理一下您的数据才能知道确切的数字。通常,批量大小为 32 个中等大小的图像需要 10 个 epoch 才能从卷积层中提取良好的特征。再次,它是相对的

【讨论】:

  • 为什么只对密集层使用 dropout?
  • 批量归一化一般用于两个卷积层之间。 Dropout 在正则化卷积层方面效果较差。
【解决方案2】:

Keras 提供了这个提前停止功能,您只需定义即可。

EarlyStopping(patience=self.patience, verbose=self.verbose, monitor=self.monitor)

假设 epochs 参数等于 80,就像你之前说的那样。当您使用 EarlyStopping 函数时,epoch 数变为最大 epoch 数。

您可以定义 EarlyStopping 函数来监控验证损失,例如,当这种损失不再改善时,它会给它最后一次机会(您在耐心参数中输入的数字),如果在这些之后监测值没有改善训练过程的最后机会将停止。

在我看来,最好的做法是同时使用 EarlyStopping 和 ModelCheckpoint,这是 Keras API 中提供的另一个回调函数,它只是保存你最后的最佳模型(你决定什么是最好的,最好的损失或其他价值测试你的结果)。

这是您尝试处理的问题的 Keras 解决方案。此外,您还可以阅读很多关于如何处理过拟合的在线资料。

【讨论】:

    【解决方案3】:

    耶!他们是您问题的解决方案。选择 epoch,例如 1k ,2k 只需在您的神经网络上使用早期停止。

    提前停止: Keras 通过称为 Early-stopping 的回调支持提前停止训练。

    此回调允许您指定要监控的性能度量、触发器,一旦触发,它将停止训练过程。例如,如果在前 5 个 epoch 中准确度没有增加,则应用停止训练的触发器。因此,keras 将通过回调查看前 5 个 epoch,如果您的准确性没有增加,则停止训练

    Early Stopping link :

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-31
      • 2021-08-20
      • 2021-03-14
      • 2022-01-19
      • 2018-02-09
      • 1970-01-01
      • 2017-11-21
      • 2019-07-19
      相关资源
      最近更新 更多