如何设置batch_size,steps_per epoch和验证步骤


26

我开始使用Keras学习CNN。我正在使用theano后端。

我不明白如何将值设置为:

  • batch_size,
  • 每个时代的步骤,
  • 验证步骤。

batch_size如果我在训练集中有240,000个样本,在测试集中有80,000个,应将设置为,每个时期的步长和验证步骤的值是多少?


您的硬件规格是什么?这取决于一般人使用的批处理大小为32/64,以10〜15为周期,然后您可以从上述每个周期计算步骤
。– Aditya,

Answers:


28
  • batch_size确定每个迷你批次中的样品数量。它的最大值是所有样本的数量,这使得梯度下降准确无误,如果学习速率足够小,则损耗将减少至最小值,但迭代速度会较慢。其最小值为1,导致随机梯度下降:快,但是梯度阶跃的方向仅基于一个示例,损耗可能会跳跃。batch_size允许在两个极端之间进行调整:准确的渐变方向和快速迭代。此外,如果您的模型+数据集不适合可用(GPU)内存,则batch_size的最大值可能会受到限制。
  • steps_per_epoch在训练纪元被视为完成之前的批量迭代次数。如果您有固定大小的训练集,则可以忽略它,但是如果您有庞大的数据集或正在动态生成随机数据扩充,即训练集具有(生成的)无限大小,这可能会很有用。如果您有时间查看整个训练数据集,建议您跳过此参数。
  • validation_steps类似steps_per_epoch但在验证数据,而不是设置在训练数据。如果您有时间检查整个验证数据集,建议跳过此参数。

“跳过此参数”是什么意思?当我删除参数我得到When using data tensors as input to a model, you should specify the steps_per_epoch argument
Nicolas Raoul

根据文档,方法fit的参数steps_per_epoch具有默认值,因此应该是可选的:“默认值None等于数据集中的样本数量除以批量大小;如果无法确定,则为1。” 资料来源:keras.io/models/model
Silpion

1

Github中有一个答案

  1. model.fit_generator 需要输入数据集生成器无限运行。
  2. steps_per_epoch通过调用生成器steps_per_epoch时间用于一次生成整个数据集
  3. epochs给出在整个数据集中训练模型的次数。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.