Keras SGD 优化器是否实现批量、小批量或随机梯度下降?

机器算法验证 神经网络 喀拉斯 随机梯度下降
2022-03-20 19:01:16

我是深度学习库的新手,因此决定使用Keras在实现 NN 模型时,我batch_sizemodel.fit().

现在,我想知道我是否使用SGD优化器,然后设置batch_size = 1,mb, where m= no。训练示例和 1 < b< m,那么我实际上将分别实现StochasticBatchMini-Batch Gradient Descent然而,另一方面,我觉得使用SGD作为优化器会默认忽略batch_size参数,因为SGD代表随机梯度下降,它应该始终使用 1 的 batch_size(即,每次梯度下降迭代使用单个数据点)。

如果有人能澄清以上两种情况中哪一种是真实的,我将不胜感激。

1个回答

它就像你建议的那样工作。batch_size参数完全符合您的预期:它设置批处理的大小:

  • 批量大小IntegerNone每次梯度更新的样本数。如果未指定,batch_size 将默认为 32。

从编程的角度来看,Keras 将每个优化器特定的权重更新公式参数(学习率、动量等)与方法之间共享的全局训练属性(批量大小、训练长度等)分离。这是方便的问题——让优化器 SGD、MBGD、BGD 都做同样的事情只是用不同的批量大小是没有意义的。