python - 在神经网络训练期间应该何时调用反向传播算法?
问题描述
我有一个有效的反向传播算法,当在相同的奇异输入上迭代 100,000 次时正确地最小化错误,例如 [1, 0] -> 1。
但是我不确定如何在有多个输入时扩展它来训练神经网络。
假设我们希望训练 XOR 函数,具有四种可能的输入和输出状态:
[ 0, 0 ] -> 0
[ 0, 1 ] -> 1
[ 1, 0 ] -> 1
[ 1, 1 ] -> 0
我尝试在每个输入输出测试数据之后调用反向传播算法。即使经过大量迭代,网络也根本不会以这种方式学习。
我是否应该在调用反向传播之前计算整个训练集(即上述 4 种情况)的累积误差?
在这个例子中,如何存储和使用整个训练集的累积误差?
谢谢你。
解决方案
每个示例后更新,累积版本都是正确的。他们只是实现了两种略有不同的算法,每一步更新都会使其成为 SGD(随机梯度下降),而另一个 GD(梯度下降)。也可以在两者之间做一些事情,更新每批数据。您描述的问题(缺乏学习)与更新发生的时间无关。
请注意,“正确学习”一个样本并不意味着您拥有无错误的算法!如果您只有一个样本,那么您只调整最后一层的偏差的网络应该能够这样做,但如果您有多个样本就会失败。这只是可以打破但通过“单样本测试”的一个示例。
推荐阅读
- python - 如何制作一个简单的 Python 文本服务器
- javascript - 验证出错
- macos - PIXI.autoDetectRenderer TypeError:gl.getInternalformatParameter 不是函数
- sql - 将 sql server 2016 指定为目标平台的项目无法发布到 sql server 2014
- grafana - 涌入数据库 2.0 | 多次查询数据和聚合
- go - 转到模板列表变量以从模板替换
- php - WordPress is_tags 未检测到点击的标签
- python-3.x - 仅从列中选择唯一值进行处理,然后更新回所有唯一值
- android - Android Amplify Cognito Post Confirmation User Table 未在用户确认后填充
- matlab - 创建带权重的对