Machine learning 历元大小是否需要是批量大小的精确倍数?

Machine learning 历元大小是否需要是批量大小的精确倍数?,machine-learning,neural-network,Machine Learning,Neural Network,当训练网络时,如果历元中的样本数不是批量大小的精确倍数,这有关系吗?我的培训代码似乎并不介意这种情况,尽管我的损失曲线目前非常混乱(以防这是一个相关问题) 了解这一点会很有用,因为如果它不是一个问题,那么它就可以通过处理数据集来量化数据集。也可以减少对捕获数据的浪费。在卷积神经网络(CNN)的上下文中,批量大小是一次输入算法的示例数。这通常是一些较小的2次方,如32、64128等。在训练期间,优化算法计算批次的平均成本,然后运行反向传播以更新权重。在单个历元中,算法以$n_{batches}={

当训练网络时,如果历元中的样本数不是批量大小的精确倍数,这有关系吗?我的培训代码似乎并不介意这种情况,尽管我的损失曲线目前非常混乱(以防这是一个相关问题)


了解这一点会很有用,因为如果它不是一个问题,那么它就可以通过处理数据集来量化数据集。也可以减少对捕获数据的浪费。

在卷积神经网络(CNN)的上下文中,批量大小是一次输入算法的示例数。这通常是一些较小的2次方,如32、64128等。在训练期间,优化算法计算批次的平均成本,然后运行反向传播以更新权重。在单个历元中,算法以$n_{batches}={n_{examples}\over batchsize}$次运行。通常,该算法需要经过几次训练才能实现权值的收敛。每个批次通常从整个示例集中随机取样

其思想是:小批量优化wrt(x1,…,xn)相当于连续优化步骤wrt x1,…,xn输入,因为梯度是一个线性算子。这意味着小批量更新等于其单个更新的总和。这里需要注意的是:我假设NN不应用批处理规范或任何其他层,这些层会向推理模型添加显式变化(在这种情况下,数学有点复杂)

因此,批量大小可以看作是一个纯粹的计算概念,通过矢量化和并行计算来加速优化。假设一个人可以承受任意长的训练,并且数据被正确地洗牌,那么批量大小可以设置为任意值。但并非所有超参数都是如此,例如,非常高的学习率很容易迫使优化偏离,因此不要错误地认为超参数调整通常并不重要

如果历元中的样本数不是批次大小的精确倍数,这有关系吗

不,没有。您的样品数量可以是1000,批量大小可以是400


您可以根据要覆盖的历代总数来决定总迭代次数(其中每个迭代=采样一批并进行梯度下降)。比如说,你想要大概有5个时代,然后大概你的迭代次数>=5*1000/400=13。因此,您将随机抽样13次,得到大约5个纪元

此网络中没有批处理规范化。目前只使用辍学学生。可能会在某个时候添加L2规范。由于均方误差计算是一个非线性运算,我不认为批次与相等数量的随机步骤相同