在Keras中安装模型时,批量大小和时代数量应该有多大?

pr3*_*338 44 python machine-learning keras data-science

我正在训练970个样本并对243个样本进行验证.

在Keras中拟合模型以优化val_acc时,批量大小和时期数量应该有多大?根据数据输入大小,是否有任何经验法则?

Luc*_*dan 42

由于您有一个非常小的数据集(大约1000个样本),因此使用32的批处理大小可能是安全的,这是非常标准的.除非你正在训练数十万或数百万的观察,否则它不会对你的问题产生巨大的影响.

要回答有关批量大小和时代的问题:

通常:较大的批量大小会导致培训进度加快,但并不总是快速收敛.较小的批量大小训练较慢,但可以更快地收敛.这绝对是问题依赖.

一般而言,模型在一定程度上随着更多的训练时代而得到改善.随着它们汇合,它们将准确地开始稳定.尝试50这样的东西并绘制纪元数(x轴)与精度(y轴)的关系图.你会看到它的平衡点.

您的数据的类型和/或形状是什么?这些图像,还是表格数据?这是一个重要的细节.

  • 批处理大小应尽可能地大而不会超出内存。限制批处理大小的唯一另一个原因是,如果您同时获取下一个批处理并在当前批处理上训练模型,则可能会浪费时间来获取下一个批处理(因为它太大了,并且内存分配可能占用大量内存)。当模型完成对当前批次的拟合时,在这种情况下,最好更快地获取批次以减少模型的停机时间。 (2认同)
  • 我经常看到批量大小的值是8的倍数。这种选择是否有正式的理由? (2认同)
  • 较大的纪元是否会导致过度拟合?数据越多、纪元越少是否会导致拟合不足? (2认同)

小智 11

上面的好答案。每个人都提供了很好的意见。

理想情况下,这是应该使用的批量大小的顺序:

{1, 2, 4, 8, 16} - slow 

{ [32, 64],[ 128, 256] }- Good starters

[32, 64] - CPU

[128, 256] - GPU for more boost
Run Code Online (Sandbox Code Playgroud)

  • 嗯,有没有任何消息来源为什么您将其陈述为既定事实? (8认同)
  • 对我来说,这些价值观非常糟糕。我最终为我的模型使用了 3000 的批量大小,这比您在这里建议的要大得多。 (3认同)
  • 这似乎过于简单化了。批量大小通常取决于输入集的每个项目的复杂性以及您正在使用的内存量。根据我的经验,我通过逐渐扩大批量大小来获得最佳结果。对我来说,我运气最好,从 1 开始,每训练“n”小时将批量大小加倍,其中“n”取决于数据集的复杂性或大小,直到达到机器的内存限制,然后继续尽可能长时间地以最大批量进行训练。 (3认同)

Voj*_*tas 9

在此输入图像描述

这篇文章中这样说:

  • 随机意味着 1 个样本,mimibatch 批次包含少量样本,批次意味着完整的训练数据集 = 这是我在这里犯规的
  • 小批量的优点:训练速度更快,所需 RAM 更少
  • 缺点:批量越小,梯度的估计就越不准确

本文中,他们尝试了 256,512,1024 个批量大小,所有模型的性能都处于彼此的标准差内。这意味着批量大小对性能没有任何显着影响。

最后一句话:

  • 如果 RAM 有问题 = 减小批量大小
  • 如果您需要更快地计算=减少批量大小
  • 如果较小批量后性能下降=增加批量大小


tau*_*Guy 8

我使用Keras对语音数据进行非线性回归.我的每个语音文件都为我提供了一个文本文件中25000行的功能,每行包含257个实数值.我使用批量大小100,纪元50来训练 SequentialKeras的模型,有1个隐藏层.经过50个训练时期后,它收敛得很低val_loss.


fna*_*ic9 6

我使用 Keras 为市场组合建模执行非线性回归。在使用 3 个隐藏层的 Keras 中训练 Sequential 模型时,我在批量大小为 32 和 epochs = 100 的情况下获得了最佳结果。通常 32 或 25 的批量大小是好的,除非您有大型数据集,否则 epochs = 100。在大型数据集的情况下,您可以使用 10 的批次大小,黑白 50 到 100 的纪元。同样,上述数字对我来说效果很好。

  • 批量大小的值应(首选)以 2 的幂为单位。 /sf/ask/3113826341/ (5认同)

Ale*_*ble 6

使用 Keras,您可以使用tf.keras.callbacks.EarlyStopping,如果监控的损失停止改善,它会自动停止训练。您可以使用参数允许没有改进的纪元patience

它有助于找到一个平台,您可以在此基础上继续优化 epoch 的数量,甚至可能足以实现您的目标,而无需处理 epoch。