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

时间:2016-01-28 00:21:39

标签: python machine-learning keras data-science

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

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

6 个答案:

答案 0 :(得分:32)

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

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

一般:较大的批量大小会导致培训进度加快,但并不总是快速收敛。较小的批量大小训练较慢,但可以更快地收敛。它肯定是依赖于问题的。

总的来说,,模型在更多的训练时代得到改善。当它们收敛时,它们会准确地开始稳定。尝试50这样的东西并绘制纪元数(x轴)与精度(y轴)的关系图。你会看到它的平衡点。

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

答案 1 :(得分:7)

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

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

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

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

[32, 64] - CPU

[128, 256] - GPU for more boost

答案 2 :(得分:6)

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

答案 3 :(得分:3)

我使用Keras对市场组合建模进行非线性回归。我获得了最佳结果,批量大小为32,epochs = 100,同时在Keras中训练了一个带有3个隐藏层的Sequential模型。通常批量大小为32或25是好的,除非您有大数据集,否则epochs = 100。在大型数据集的情况下,批量大小为10,时期b / w为50到100。 上面提到的数字对我来说也很好。

答案 4 :(得分:0)

我有大约40,000个数据点。我发现使用更大的批次大小可以缩短训练模型所需的时间。我正在使用10,000的批处理大小。.使用非常大的批处理大小有什么弊端吗? (我正在使用keras)

答案 5 :(得分:-4)

Epochs完全可以满足您的要求,具体取决于验证损失何时停止进一步改善。这应该是批处理大小:

定义函数以查找用于训练模型的批量大小

正是在开始培训/测试之前,才使用此功能查找批量大小。

-(void)didFinishInteractingWithScrubber:(NSScrubber *)scrubber {
    NSLog(@"Manipulation ended\n");
    NSAnimationContext*c = NSAnimationContext.currentContext;
    [c setCompletionHandler:^{
        NSLog(@"Inertial scrolling stopped!\n");
    }];
}