【问题标题】:CNN: Is it better to train 300.000 images during 1 epoch or 300 images during 1000 epoch?CNN:在 1 个 epoch 中训练 300.000 张图像还是在 1000 个 epoch 中训练 300 张图像更好?
【发布时间】:2018-12-28 11:41:15
【问题描述】:

这个问题与卷积神经网络(尤其是YoloV3)有关

由于一个 epoch 是所有训练示例的一次前向传递和一次反向传递,为了使模型正确收敛,它是否相同(在精度和收敛时间方面):

  • m 个 epochs 内使用 n*k 图像 进行训练?
  • m*k epochs 中使用 n 幅图像 进行训练?

【问题讨论】:

  • 您说过“一个 epoch 是所有训练示例的一次前向传递和一次反向传递”。因此,只需训练“每个时期的所有训练示例”。

标签: python deep-learning epoch yolo


【解决方案1】:

在 m 个 epoch 上使用 n*k 图像通常会得到更好的模型,否则很容易出现overfitting

也有许多研究该领域的论文(为什么更多的数据似乎总是更好),例如this one.

我建议对所有可用数据(减去测试和验证集)进行训练,只要模型尚未收敛或测试指标没有一致的下降趋势(在这种情况下,您可能过度拟合训练数据)。

【讨论】:

    【解决方案2】:

    不,它们不一样。

    *您向网络展示的示例数量定义了它要寻找的内容 - 具有更多示例的网络往往更通用。例如,如果有 1000 张不同狗的图片,而你只显示 300/300000 张图片,则网络(平均)只能识别一种特定的狗,无法挑选出所有狗的共同特征.

    *一个 epoch 基本上是在一小步内修改网络,这里的关键词是小——步太大可能会超出我们的网络参数目标值。由于我们正在采取一些小步骤,因此我们必须采取一些措施才能到达我们想要的地方。

    【讨论】:

    • 感谢您的回复。但我想知道的是:如果我放了 300.000 张单条狗的图像——比如说一只德国牧羊犬——并且我在一个时期(或 300.000 次迭代)进行训练,我的损失函数是否会低至训练 300 张图像这条狗在 1000 个 epoch 上?我的意思是,CNN 会利用新图像的优势进行收敛,还是更快地训练以减少图像数量但产生更多时期?因为如果我训练只识别一只狗,过度拟合不是问题
    猜你喜欢
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多