gpt4 book ai didi

tensorflow - TensorFlow 的 model.fit() 函数中的 batchSize 是多少?

转载 作者:行者123 更新时间:2023-12-04 11:22:32 26 4
gpt4 key购买 nike

使用 TensorFlow.js 定义模型后,您可以运行 model.fit()训练它。这个函数需要一些参数,包括一个配置对象。这个对象有一个属性 batchSize . documentation on model.fit() 只是说:

Number of samples per gradient update. If unspecified, it will default to 32.



虽然这可能是技术上正确的答案,但它并没有真正的帮助。我为什么要更改这个数字?我意识到如果我增加它,训练会变得更快,如果我减少它,它会变得更慢。但我到底在改变什么?我为什么要改变它?我需要注意什么?

这有什么提示吗?

最佳答案

批量大小是用于执行一步随机梯度下降 ( SGD ) 的训练示例的数量。
什么是新元 ? SGD 是梯度下降 (GD),但不是使用所有训练数据来计算损失函数相对于网络参数的梯度,而是仅使用训练数据集的一个子集。因此,形容词“随机”,因为仅使用训练数据的一个子集,您将是 近似 随机地(即您将引入噪声)将使用所有训练数据计算的梯度,这将被视为损失函数相对于参数的“实际”梯度。

Why should I change this number? I have realized that if I increase it, training gets faster, and if I decrease it, it gets slower. But what exactly am I changing here? Why would I change it? What do I need to watch out for?


如果批量太小,例如1,那么您将仅使用一个训练示例来计算梯度。这可能会使您的训练损失振荡很多,因为每次您只用一个训练示例来近似梯度,这通常不能代表整个训练数据。因此,根据经验,您使用的训练示例越多,梯度的近似值就越好(这将对应于所有训练示例),因此这可能会导致更快的收敛。 然而 ,在实践中,如果您使用许多训练示例,它的计算成本也可能很高。例如,假设您的训练数据由数百万个训练示例组成。在这种情况下,要执行单步梯度下降,您需要遍历所有这些训练示例,这可能需要很多时间。因此,您可能需要等待很长时间才能查看模型参数的更新方式。这可能并不理想。
总而言之,小批量会使您的训练过程出现波动,这会使您的损失函数花费大量时间才能达到局部最小值。然而,大批量也可能是不可取的,因为它也可能需要很多时间。
批量大小的典型值为 32、64 和 128。为什么?人们只是使用这些数字,因为它们凭经验似乎是小批量和大批量之间的良好折衷(在收敛、训练时间等方面)。

关于tensorflow - TensorFlow 的 model.fit() 函数中的 batchSize 是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61029052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com