反向传播参数的正确值

Right values for backpropagation parameters

我在确定正确的参数以使我的神经网络正常工作时遇到了问题。我想使用包含 60.000 个 26x26 图像的 Mnist 数据集来实现数字识别。我还了解到将数据分成多个 "chunks" 是有意义的,但我还有几个问题:每个块有多少图像?如何设置学习率?每个块有多少个反向传播周期? 你知道我可以从哪里获得此类信息的有用文章吗?

首先,如果这是您的第一个网络,我建议您使用 Keras - 它易于使用并能获得网络的感觉。当你理解了它的原理后,你可以使用 pyTorch/Tensorflow(我个人使用 PyTorch)。

现在回答你的问题: 我假设您正在实施标准神经网络(不是 CNN)。

块: 这些 "chunks" 通常称为批处理,它是一种将数据分成更小部分的方法 - 它有几个 advantages/disadvantages,但重要的是它减少了内存使用。除非你有很多 (!!) 内存,否则你无法一次在 50 000 张图像上训练你的网络,因此你可能想要解析前 256 张图像,然后是接下来的 256 张图像,依此类推。批处理的大小主要由您的记忆力决定——您应该可以接受 256 的批处理大小(如果您愿意,可以尝试增加它)。

学习率:学习率取决于您的优化器。假设您使用的是 SGD(随机梯度下降),PyTorch 中的标准是 0.1,这通常效果很好。如果您得到一些 "odd" 的结果,例如权重中的 "nan",或者如果您遇到复杂的问题,您可以调整该参数,但我建议您坚持使用标准,也许可以尝试不同的值,当您知道您的网络运行良好时。如果它一直给你 "nan",例如尝试将它减少到 0.01。

反向传播: 反向传播是在你更新你的权重时,你在训练了一批之后这样做,因此你将做一个 "back propagation" pr。批量。

我建议您查看 "threeblueonebrows" 教程 - https://www.youtube.com/watch?v=aircAruvnKk - which explains the concept of a network, also a kaggle guide using pytorch - https://www.kaggle.com/kanncaa1/pytorch-tutorial-for-deep-learning-lovers