神经网络训练

4

我试图识别每个数字的图片。我已经除去了除了数字之外的所有内容,以便除了数字放置在图片上不同以外,几乎没有噪音。我使用Neuroph的图像识别GUI,并对训练有一些问题。

似乎我用于图片的分辨率越大,训练效果就越差。这是为什么?我的训练集中有100张图片。每个数字有10张。这可能太少了吗?为什么无论我做什么,每次训练都只会收敛到一些数字通常在2-3之间的总网络错误。

这里是其中一个训练的图片 alt text

它并没有学到很多东西


3
您需要使用什么类型的学习算法?它的参数是什么?神经网络拓扑结构是什么?这是一种反向传播吗?请提供更多详细信息,因为在这种问题中它们是必不可少的。 - Rekin
你看到的上面的图像使用了一种称为sigmoid传递函数的反向传播。学习参数是默认值。学习率为0.5,动量为0。神经网络使用了一个包含12个神经元的隐藏层,我发现这可以使误差最小化。 - AnAmuser
1
最终,我通过将学习率更改为0.35并在网络开始收敛时随机化网络,成功地训练了这个网络。 - AnAmuser
2个回答

3

信息量呈指数级增长!

当您提供更高分辨率的图像时,会提供额外的信息需要进行评估。

如果您的分辨率是10x10px,那么每个图像将有100个像素,您的每个数字有10个图像,也就是每个数字有1000个像素

现在,如果您将分辨率提高到20x20px,那么每个图像将有400个像素,或者每个数字将有4000个像素

换句话说:增加分辨率会导致每个数字要评估的像素数量呈指数级增长。

添加更多(不必要的)像素会增加错误的可能性:

通常,在机器学习中,图片被削减到最少(无论是大小还是颜色),以尽可能减少错误的空间。当您有更多的像素时,算法可能会学习到与实际图像形状完全无关的像素信息。


0
首先,我要赞同Lirik的评论,增加分辨率在这里没有帮助。
除此之外,每个数字只有10个样本,很可能不足够你的神经网络进行训练。即使你想训练一个人来识别某种他们不了解的奇怪语言中的数字,10个数字样本可能也不足够。尝试通过增加训练数据的大小来获得更好的结果,大约每个数字250-300个样本。关于你特定的网络需要多少数据,很难说。
我猜你会发现,使用更多的训练数据和低分辨率图像会获得更好的结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接