阅读了很多文章,现在我脑筋急转弯,需要对 mini batch 的概念有一个全新的认识。我是机器学习的新手,如果我的过程是否正确,我将不胜感激。这是我的前提:
我有一个包含 355 个特征和 8 个类输出的数据集。共有12200条数据。这是我的神经网络的粗略可视化:
我决定隐藏层 1 使用 181 个神经元,隐藏层 2 使用 96 个神经元。我对隐藏层使用 ReLu 激活,对输出层使用 Logistic。
为了做小批量,我将批量大小设置为 8。所以我总共有 1525 个批次,每批次有 8 个数据集。这是我的步骤:
- 获取第一批数据(8 组 355 个输入和 8 个输出)。
- 批次的前向传播。
- 获取错误并计算误差平方和。对于平方和,我首先对批次的误差进行平均,使用公式 SumError = (1/8)*sum(error^2)
- 批次的反向传播
- 获取反向传播后权重值的平均值。
- 使用新的权重作为下一批的权重。
- 获取下一批数据(8 组 355 个输入和 8 个输出)。
- 使用新的权重集重复 2-7。
- 当所有批次完成后,获取 SumError 的平均值以获得每个时期的平方和。
- 重复 1-9 直到每个 epoch 的 SumError 很小。
- 获取用于验证的最终权重
这就是我的小批量的过程。这个对吗?我的意思是,对于权重,我是使用每批之后计算的权重作为下一批的输入权重,还是先收集所有权重(起始权重将用于所有批次),然后平均所有批次的重量?然后使用平均权重作为下一个 epoch 的输入?