pr3*_*338 44 python machine-learning keras data-science
我正在训练970个样本并对243个样本进行验证.
在Keras中拟合模型以优化val_acc时,批量大小和时期数量应该有多大?根据数据输入大小,是否有任何经验法则?
Luc*_*dan 42
由于您有一个非常小的数据集(大约1000个样本),因此使用32的批处理大小可能是安全的,这是非常标准的.除非你正在训练数十万或数百万的观察,否则它不会对你的问题产生巨大的影响.
要回答有关批量大小和时代的问题:
通常:较大的批量大小会导致培训进度加快,但并不总是快速收敛.较小的批量大小训练较慢,但可以更快地收敛.这绝对是问题依赖.
一般而言,模型在一定程度上随着更多的训练时代而得到改善.随着它们汇合,它们将准确地开始稳定.尝试50这样的东西并绘制纪元数(x轴)与精度(y轴)的关系图.你会看到它的平衡点.
您的数据的类型和/或形状是什么?这些图像,还是表格数据?这是一个重要的细节.
小智 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)
我使用Keras对语音数据进行非线性回归.我的每个语音文件都为我提供了一个文本文件中25000行的功能,每行包含257个实数值.我使用批量大小100,纪元50来训练 SequentialKeras的模型,有1个隐藏层.经过50个训练时期后,它收敛得很低val_loss.
我使用 Keras 为市场组合建模执行非线性回归。在使用 3 个隐藏层的 Keras 中训练 Sequential 模型时,我在批量大小为 32 和 epochs = 100 的情况下获得了最佳结果。通常 32 或 25 的批量大小是好的,除非您有大型数据集,否则 epochs = 100。在大型数据集的情况下,您可以使用 10 的批次大小,黑白 50 到 100 的纪元。同样,上述数字对我来说效果很好。
使用 Keras,您可以使用tf.keras.callbacks.EarlyStopping,如果监控的损失停止改善,它会自动停止训练。您可以使用参数允许没有改进的纪元patience。
它有助于找到一个平台,您可以在此基础上继续优化 epoch 的数量,甚至可能足以实现您的目标,而无需处理 epoch。