如何在keras中设置正确的batch_size和stepps_per_epoch ?



我有20000张RGB图片。我设置了batch_Size = 1(由于GPU的容量)。那么,这是否意味着模型权重会随着每张图片的变化而变化呢,还是取决于steps_per_epoch呢?

我应该如何设置steps_per_epoch和epoch,以便使用所有20000张图像在不同的epoch中参与训练?

让我们先澄清一些概念:

每个<<ul>
  • strong>迭代正在访问数据集中的一批样本。
  • 每个<<li> strong> 正在访问数据集中的所有样本。权重
  • 在每次迭代后更新。
  • 批大小和每个epoch的步骤与上述概念有何关系?

    • batch_size:确定每次迭代的样本数量(更新权重)。最小批大小为1(称为随机梯度下降),最大值可以是所有样本的数量(更多-阅读repeat()在这里)。最大批处理大小的另一个限制是适合可用的GPU内存,正如你在问题中所说的。将batch_size设置为较低的数字会使迭代更快,但损耗减少会使振荡更大。

    • steps_per_epoch:为了考虑一个epoch的迭代次数已完成。如果你有一个固定大小的训练集,你可以忽略它,但如果你有一个巨大的数据集,或者如果你正在动态地生成数据增强,也就是说,如果你的训练集有一个(生成的)无限大小的repeat()函数,它可能是有用的。如果你有时间浏览整个训练数据集,你可以跳过这个参数。

    是的,权重在每批后更新。steps_per_epoch应该是数据点的数量(在您的例子中是20000)除以批大小。因此,如果批处理大小为1,steps_per_epoch也将为20000。

    相关内容

    • 没有找到相关文章

    最新更新