Neural network 反向传播参数的正确值

Neural network 反向传播参数的正确值,neural-network,backpropagation,Neural Network,Backpropagation,为了让我的神经网络工作,我很难找出正确的参数。我想使用60.000 26x26图像的Mnist数据集实现数字识别。我还了解到将数据分成多个块是有意义的,但我还有几个问题:每个块有多少图像?如何设置学习率?每个区块有多少个反向传播周期? 你知道我可以从哪些有用的文章中获得此类信息吗?首先,如果这是你的第一个网络,我建议你使用Keras——它使用起来很容易,并且有网络的感觉。当您了解了可以使用Pytork/Tensorflow的原理后,我个人使用Pytork 现在谈谈你的问题: 我假设您正在实现一个

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

首先,如果这是你的第一个网络,我建议你使用Keras——它使用起来很容易,并且有网络的感觉。当您了解了可以使用Pytork/Tensorflow的原理后,我个人使用Pytork

现在谈谈你的问题: 我假设您正在实现一个标准的神经网络,它不是CNN

块: 这些数据块通常称为批处理,这是一种将数据划分为较小数据块的方法——它有几个优点/缺点,但重要的是它减少了使用的内存。除非你有很多!!内存不足,您无法一次在50000个图像上训练网络,因此您可能需要解析前256个图像,然后解析下256个图像,依此类推。批处理的大小主要由您的内存决定-如果批处理大小为256,您可以尝试增加它(如果您愿意)

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

反向传播:反向传播是当你更新你的权重时,你在训练了一个批次后做的,因此你将做一个反向传播


我建议您阅读threeblueonebrows教程,该教程解释了网络的概念,也解释了使用pytorch的kaggle指南。

谢谢您的回答,我会看一看:不客气-请接受答案如果您认为它回答了您的问题,请点击复选标记。您能进一步解释一下吗,你说的批量生产是什么意思?现在,如果我每批有100张图片,我会为每一张图片做一个背面道具,而不是只为整批做一个。。。我需要平均输入、输出和期望的输出吗?事实上,这是另一种方式-你不需要为每个图像反向投影,而是为每个批次中所有图像的平均步长。因此,当你训练时,要在批次中解析。然后计算每个图像的每个权重的变化,然后根据平均值更改权重。这样,您可以为每个批处理执行一个步骤,即批处理中每个图像的所有步骤的平均值。