问题标签 [encog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java - Encog 3.2 - RPROP 网络不更新权重
我研究了很多问题和示例,但似乎无法找出我的 RPROP NN 出了什么问题。这也是我第一次使用 Encog,所以我想知道这是否是我做错了。
我正在尝试通过输入图像(50x50)来训练网络识别猫,然后将其转换为灰度并向网络输入双精度 [] [] 和目标双 [] []。我注意到错误一直在 4.0,所以我在每次训练迭代时都执行了一个 dumpWeights() 以查看发生了什么。我注意到权重始终为零。然后我回到基础,看看我是否做对了,所以我针对 XOR 问题对其进行了修改:
我得到以下输出,注意 0.0 的行是 network.dumpWeights() 方法的结果:
纪元 #132636 错误:2.0 0,0,0,0,0,0,0,0,0 纪元 #132637 错误:2.0 0,0,0,0,0,0,0,0,0 纪元 #132638 错误:2.0 0,0,0,0,0,0,0,0,0 纪元#132639 错误:2.0 0,0,0,0,0,0,0,0,0 纪元#132640 错误:2.0
... 等等。
有什么明显的你可以看到我在这里做错了吗?我还尝试了 2-3-1 架构作为 XORHelloWorld.java 示例的实现。
任何帮助将不胜感激。
java - Encog ImageNeuralNetwork 错误未停止
我正在尝试学习并适应 Java 中的 ImageNeuralNetwork 示例。到目前为止,我的问题是,当我给 NN 提供大量 32X32 的图像并让它训练时,误差永远不会低于 14%,并且一开始它会到处乱跳。
我的图像是 BW,它们分为 27 个类别。所以我知道有 27 个输出神经元。
我的问题是为什么 NN 不学习,我尝试使用不同的神经元数量设置不同的隐藏层(1 层或 2 层),但没有任何帮助。
谁能告诉我我做错了什么?就像我说的,我刚开始使用 NN,我在这里有点迷路
编辑:似乎如果我给它更少的图像作为输入来学习错误会下降,但这并不能真正解决问题,如果我想对很多图像进行分类,我会遇到错误永远不会下降
java - 艾尔曼网络不停歇
我对 XOR 算子的 Elman 网络训练并没有停止,它运行了数百万次迭代。任何帮助将非常感激!
java - Encog - 带有验证集的 EarlyStoppingStrategy
一旦我看到从验证集计算的误差开始增加,我想停止训练网络。我正在使用带有 RPROP 的 BasicNetwork 作为训练算法,并且我有以下训练迭代:
显然这是行不通的,因为在确定我是否需要停止训练之前,权重已经改变了。无论如何我可以退后一步并使用旧的重量吗?
我还看到了EarlyStoppingStrategy
使用该addStrategy()
方法可能需要使用的类。但是,我真的不明白为什么EarlyStoppingStrategy
构造函数同时接受验证集和测试集。我认为它只需要验证集,并且在我测试网络输出之前根本不应该使用测试集。
artificial-intelligence - 使用 Encog 进行集成学习
是否可以举例说明如何使用 Encog 创建集成学习器以进行时间序列预测?
我在想一个 iRPROP+ 集成学习器。
谢谢
encog - encoder/decoder ripping from autoencoder in encog
I have created and learned autoencoder in Encog and I try to rip it into parts: encoder and decoder part. Unfortunately I cannot get it and I keep getting strange improper data (comparing result from applying once net to data and twice data -> enc -> dec).
I have tried to make it with simply GetWeight and SetWeight but there result is incorrect. The solution found in encog documentation - initialization flat network is for me not clear (I cannot get it working).
Full old-like (set/get weight) code of AutoEncoder:
How can I correctly rip only two first layers from autoencoder for encoder and two last layers from one for decoder?
artificial-intelligence - Bug in Resilient Backpropagation?
I'm struggling with implementing Resilient Propagation correctly. I already implemented the backpropagation Algorithm to train a Neural Network, and it works as expected for an XOR-Net, i.e. it takes about 600 Epochs to drop Error below 1%. Now i tried implementing Resilient Propagation (http://en.wikipedia.org/wiki/Rprop) for the same problem and for the first few Epochs Error drops quickly to 23% but then raises to 50% and stays there.
I implemented it exactly as per description in http://www.heatonresearch.com/book/introduction-neural-network-math.html, but that's a puzzling Description: it's different from the wikipedia Rprop-Page AND from the implementation in encog, which was written by the same author as the book, as far as i know.
I also already tried the different implementations from the different sources, but nothing worked.
Some of the differences between the various sources:
- using signum(currentPartialDerivative) instead of signum(currentPartialDerivative * previousPartialDerivative) for the calculation of the weight-changes
- using the last weight change, instead of the new update value for the new weight change
- Calculating the weight changes firstly and the new update values secondly
What is the correct way of implementing this? Subsequently the Implementation according to the book:
The same Method for normal Backpropagation works fine:
java - Encog输入层大小限制
我正在使用带有 Java 的 Encog 框架来做一个图像识别系统。不过,当我将 Downsample 宽度和高度设置为 100 以上时,我得到了一个
在尝试创建网络时。
输入层的神经元数量有限制吗?
encog - ROC 的 Encog 二进制分类分数
我正在使用 Encog(通过 Java)研究二进制分类器。我使用 SVM 或神经网络设置它,我想使用(部分)ROC 曲线下的区域来评估不同模型的质量。
更具体地说,理想情况下,我希望将模型的输出转换为某种预测置信度分数,该分数可用于 ROC 中的排名排序,但我尚未在文档中找到任何内容。
在代码中,我得到的模型结果如下:
我如何获得分类的数值置信度?
multithreading - 用于时间序列预测的 HyperNEAT 网络需要 Encog 帮助
我正在使用 Encog AI 框架使用 HyperNEAT 网络进行时间序列预测。
这是我用来创建网络的简单代码。
其中 columns 是特征的数量,windowSize 是预测未来值所需的前几天数(在我的示例中 windowSize 为 1)。
我得到这个例外:
Exception in thread "pool-2-thread-416" java.lang.ArrayIndexOutOfBoundsException
at org.encog.util.EngineArray.arrayCopy(EngineArray.java:107)
at org.encog.neural.neat.NEATNetwork.compute(NEATNetwork.java:194)
at org.encog.util.error.CalculateRegressionError.calculateError(CalculateRegressionError.java:46)
at org.encog.neural.networks.training.TrainingSetScore.calculateScore(TrainingSetScore.java:61)
at org.encog.ml.ea.score.parallel.ParallelScoreTask.run(ParallelScoreTask.java:83)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
处理线程似乎有问题。有人可以帮我解决这个问题吗?我的第二个问题是:如何在 Encog 中使用反向传播训练 NEAT 网络?