我有以下使用 RPOP - 弹性反向传播的神经网络
NetCore = new BasicNetwork();
NetCore.AddLayer(new BasicLayer(null, false, 32));
NetCore.AddLayer(new BasicLayer(new ActivationTANH(), true, 65));
NetCore.AddLayer(new BasicLayer(new ActivationTANH(), true, 65));
NetCore.AddLayer(new BasicLayer(new ActivationSigmoid(), false, 1));
NetCore.Structure.FinalizeStructure();
NetCore.Reset();
(我发布代码只是为了确保我做得正确,如果没有人指出,我希望)
训练网络后,错误率最小化到 1% 左右,我通过了测试数据,大多数时候输出会产生类似“5,07080020755566E-10”的内容,其中我期望数字从 0 到 1还应该注意的是,当这种情况发生时,它们总是正数(尚未遇到负输出)。
我想问的第二个问题如下:神经网络是用来预测足球比赛的,所以考虑到我有 32 个输入。 16 个输入用于团队 1 绩效数据,16 个输入用于团队 2。
训练集是这样准备的:假设我们有 1000 个匹配项,所有这些训练集的输出都是 1。
因此,在准备训练集的过程中,额外添加了反向匹配,其中输出为 0,当然,团队 1 和团队 2 的输入会分别更改。
在测试时我得到了同一场比赛的以下结果
Output 0,0125940938512236 Desired 1 direct
Output 0,0386960820583483 Desired 0 reversed
问题是为什么? :)
我将不胜感激任何帮助。 阐明这个问题将为我指明我应该挖掘的方向。 提前致谢。
最佳答案
After training the network, the error rate is minimized to around 1%, i pass the test data and most of the time the output is produced something like this "5,07080020755566E-10" where i expect numbers from 0 to 1 and also it should be noted that when such cases occur they are always positive number(haven't encountered negative outputs yet).
5,07080020755566E-10 是 0 到 1 之间的数字。这是一个非常小的数字 - 仅比 0 多一点点。(我假设您的文化使用逗号作为小数)分隔符。)它是 0,00000000050708(...) - E-10 表示“向右移动 10 位小数”。
我并没有真正理解你的第二个问题 - 我建议你单独问它,并且更详细 - 假设这确实是一个编程问题。 (目前还很难说。)
关于c# - 输出值预计为 0 到 1,但有时会产生超过 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18829939/