如何提高Matlab中神经网络中的数字识别预测?

我已经使用神经网络进行了数字识别(56x56数字),但我在测试集中获得了89.5%的准确度,在训练集中达到了100%。 我知道使用此训练集可以在测试集上获得> 95%的成绩。 有什么方法可以改善我的训练,这样我可以得到更好的预测吗? 将迭代次数从300更改为1000,准确度达到+ 0.12%。 我也受到文件大小的限制,所以节点数量的增加可能是不可能的,但是如果是这种情况,也许我可以从输入层中剪切一些像素/节点。

为了训练我正在使用:

  • 输入层:3136个节点
  • 隐藏层:220个节点
  • 标签:36
  • 正则化成本函数,lambda = 0.1
  • fmincg来计算权重(1000次迭代)

  • 正如评论中所述,最简单和最有前途的方法是切换到卷积神经网络。 但是对于你现在的模型,你可以:

  • 添加更多的图层,每个图层的神经元数量较少,这增加了学习能力,并应该提高一点精度。 问题是你可能会开始过度劳累。 使用正则化来解决这个问题。

  • 使用批量标准化(BN)。 当你已经在使用正则化时,BN加速了训练,并且也进行了正则化,并且是一种NN特定的算法,可能会更好。

  • 做一个合奏。 在同一个数据集上训练多个NN,但使用不同的初始化。 这会产生稍微不同的分类器,您可以将它们的输出组合起来以获得精确度的小幅提高。

  • 交叉熵损失。 你没有提及你使用的是什么损失函数,如果它不是交叉熵,那么你应该开始使用它。 所有高精度分类器都使用交叉熵损失。

  • 切换到反向传播和随机渐变下降。 我不知道使用不同优化算法的效果,但反向传播可能优于您当前使用的优化算法,您可以将其与其他优化程序(如Adagrad或ADAM)结合使用。

  • 其他可能会提高准确性的小改变正在改变激活函数(如ReLU),在每个时期后洗牌训练样本,并进行数据增强。

  • 链接地址: http://www.djcxy.com/p/32113.html

    上一篇: How to improve digit recognition prediction in Neural Networks in Matlab?

    下一篇: you must feed a value for placeholder tensor 'in'