【问题标题】:Encog training error for resilient backprop over 100%弹性反向传播的 Encog 训练误差超过 100%
【发布时间】:2016-02-18 04:24:12
【问题描述】:

我有一个数据集,当加载、规范化并输入前馈神经网络时,默认情况下(没有任何训练)会给我超过 100% 的错误。从 130%-150% 可能取决于随机权重。我的印象是错误率最多可以达到100%?我错了吗?

当我运行迭代时,误差降至略低于 100%。

另外,在训练网络(隐藏层和输出的 tanh 激活函数)时,我有时会得到 Result 的值超过限制 (-1, 1)。例如,理想值是 1,结果是 5.53042334202304(组成值,但你明白了)。我很确定这是错的?为什么会这样?

这是什么乱七八糟的,为什么会这样?我的数据是否以某种方式无法正常化?我是否选择了错误的配置?欢迎提出任何建议,因为我的想法已经不多了。

我还上传了我的整个项目,以便您自己查看和测试。

My Project Data

我正在使用 Encog Workbench 3.2.0 进行所有这些测试,虽然这可能与 Encog 无关,但我只是不知道我是在犯一些基本错误还是只是在 Encog Workbench 中配置错误。

【问题讨论】:

  • 你能发布你的代码来训练这个模型吗?
  • 我使用 encog 工作台 3.2.0 对其进行训练,它是 encog 机器学习库的接口,因此您可以在进行任何编码之前进行测试。所以对不起,我没有任何代码。

标签: c# machine-learning neural-network classification encog


【解决方案1】:

首先对数据进行某种规范化和缩放。您可以自己或在“分析向导”的帮助下进行标准化。请注意,here 数据在分析之前已经标准化。我还注意到,在您附加的最后一层的神经网络中,最后一层被标记为“ActivationLinear”,它的输出在某些情况下可能是 5。将其更改为“ActivationTANH”并且不会超过 1

【讨论】:

  • 我做标准化。一切都使用分析向导进行标准化。分析文件也在上传的文件中。我使用它将 csv 转换为准备好输入的标准化二进制版本。因此,输入网络的所有内容都从 -1 标准化为 1。您看到的激活线性是针对输入层的,我无法更改。我相信它总是这样,并且它不会影响实际的网络。因为如果您再进一步看一下 NN 配置,您会发现它只是 tanh->tanh,并且在其中的任何地方都没有应用线性函数。
  • 我可能遗漏了一些东西,如果我错了,请告诉我!我希望你发现的线性激活是错误,但经过进一步调查,我认为它根本无法改变,我相信它只是为了展示?真的不确定...
猜你喜欢
  • 2011-11-20
  • 2011-01-09
  • 2012-03-28
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
  • 2015-10-27
相关资源
最近更新 更多