【发布时间】:2016-09-28 10:08:04
【问题描述】:
我已经使用神经网络进行了数字识别(56x56 位),但我在测试集上获得了 89.5% 的准确率,在训练集上获得了 100% 的准确率。我知道使用这个训练集可以在测试集上获得 >95% 的数据。有什么方法可以改善我的训练,以便我能得到更好的预测?将迭代次数从 300 次更改为 1000 次给了我 +0.12% 的准确度。我的文件大小也受到限制,因此不可能增加节点数量,但如果是这种情况,也许我可以从输入层中删除一些像素/节点。
训练我正在使用:
- 输入层:3136 个节点
- 隐藏层:220 个节点
- 标签:36
- lambda=0.1 的正则化成本函数
- fmincg 计算权重(1000 次迭代)
【问题讨论】:
-
你用什么方法来训练你的网络?
-
你是怎么得出这些参数的?你在使用交叉验证吗?
-
没有使用交叉验证。我从像素数(56x56)中获得的输入,隐藏节点非常随机(想从公式中获取它们:sqrt(输入*标签),但它太高而无法适应文件大小限制),lambda 是随机的也是(正在选择:1、0.1、0.01)。和迭代 - 越多越好还是我错了?
-
我会使用大量的迭代。将我的训练数据分成至少 80% 到 20% 的两部分。将第一部分作为训练提供给网络。然后用第二部分测试网络(不做任何权重更新)并计算误差。重复此操作,直到您的测试错误停止减少。否则,如果你只是用你的训练数据训练网络直到误差最小,你就会过拟合。
标签: matlab neural-network classification