0

阅读了很多文章,现在我脑筋急转弯,需要对 mini batch 的概念有一个全新的认识。我是机器学习的新手,如果我的过程是否正确,我将不胜感激。这是我的前提:

我有一个包含 355 个特征和 8 个类输出的数据集。共有12200条数据。这是我的神经网络的粗略可视化: 神经网络草图

我决定隐藏层 1 使用 181 个神经元,隐藏层 2 使用 96 个神经元。我对隐藏层使用 ReLu 激活,对输出层使用 Logistic。

为了做小批量,我将批量大小设置为 8。所以我总共有 1525 个批次,每批次有 8 个数据集。这是我的步骤:

  1. 获取第一批数据(8 组 355 个输入和 8 个输出)。
  2. 批次的前向传播。
  3. 获取错误并计算误差平方和。对于平方和,我首先对批次的误差进行平均,使用公式 SumError = (1/8)*sum(error^2)
  4. 批次的反向传播
  5. 获取反向传播后权重值的平均值。
  6. 使用新的权重作为下一批的权重。
  7. 获取下一批数据(8 组 355 个输入和 8 个输出)。
  8. 使用新的权重集重复 2-7。
  9. 当所有批次完成后,获取 SumError 的平均值以获得每个时期的平方和。
  10. 重复 1-9 直到每个 epoch 的 SumError 很小。
  11. 获取用于验证的最终权重

这就是我的小批量的过程。这个对吗?我的意思是,对于权重,我是使用每批之后计算的权重作为下一批的输入权重,还是先收集所有权重(起始权重将用于所有批次),然后平均所有批次的重量?然后使用平均权重作为下一个 epoch 的输入?

4

1 回答 1

1

实际上,您必须定义您的 epoch,并且每个 epoch 应该至少传播一次您的所有输入数据(不仅仅是 2-7 次)。并且在一个 epoch 更新一个权重并重复这些步骤直到完成所有 epoch。

于 2021-11-03T05:27:24.790 回答