如果时代中的样本数量不是批量大小的精确倍数,那么在培训网络时是否重要?我的训练代码似乎并不介意,如果是这种情况,虽然我的损失曲线目前非常嘈杂(如果是相关问题)。
这有用的知道,好像它不是一个问题,它可以节省数据集,使其按批量大小进行量化。它也可以减少对捕获数据的浪费。
答案 0 :(得分:2)
如果时期中的样本数量不是批量大小的精确倍数
,这是否重要?
不,它没有。您的样品数量可以说是1000,批量可以是400.
您可以根据要覆盖的时期总数确定迭代总数(每次迭代=抽样批次并进行渐变下降)。比如,你想要大约5个时期,然后大致你的迭代次数> = 5 * 1000/400 = 13.所以你将随机抽样13次以获得大约5个时期。
答案 1 :(得分:1)
在卷积神经网络(CNN)的上下文中,批量大小是一次提供给算法的示例数。这通常是2的小功率,如32,64,128等。在训练期间,优化算法计算批次的平均成本,然后运行反向传播以更新权重。在单个纪元中,算法使用$ n_ {batches} = {n_ {examples} \ over batchsize} $ times运行。通常,算法需要训练几个时期以实现权重值的收敛。通常从整个示例集中随机抽样每个批次。
这个想法是这样的:小批量优化wrt(x1,...,xn)相当于连续的优化步骤wrt x1,...,xn输入,因为梯度是线性算子。这意味着小批量更新等于其各个更新的总和。重要说明:我假设NN不应用批处理规范或任何其他为推理模型添加显式变化的层(在这种情况下,数学有点毛茸茸)。
因此,批量大小可以看作是一种纯粹的计算思想,可以通过矢量化和并行计算加速优化。假设一个人可以承受任意长时间的培训并且数据被适当地改组,批量大小可以设置为任何值。但是对于所有超参数都不是自动的,例如,非常高的学习速率很容易迫使优化发散,所以不要错误地认为超级聚合器调整通常并不重要。