问题标签 [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.
c# - Encog 神经网络错误永远不会改变
我开始使用神经网络。我已经修改了为我自己的目的提供的 XOR 示例,但是当我运行它时,错误永远不会改变。
我试图近似的函数需要 4 个双精度并输出 1 个双精度,4 个输入始终为正,输出可以为负或正(多数为正)。对于初学者,我使用 50 条记录来训练数据。
工作异或(每次迭代都会减少错误)
不工作(错误永远不会消失):
训练数据的一些样本记录:
我认为问题在于激活功能没有触发。我认为这可能是因为 ActivationSigmoid() 不适合这个问题,但我尝试了 ActivationTANH() 得到完全相同的结果。
c# - Encog3 Neural Networks C#:encog3 中用于输入多个数据点的接口是什么?
这是pdf!我曾经学习过encog实现。我知道它是如何处理一个数据点的,我的输入有多个数据点。
- 根据我的理解,我认为ILayer接口用于定义每一层,我不确定,请澄清。和
- 哪个代表界面中的数据点?
这是ILayer界面:
java - 神经网络基础知识成倍增加
你好我正在学习神经网络。神经元是否只存储 1 或 -1 之间的值?我不能给出 255 或 1024 之类的值吗?我正在寻找 encog java 库 XOR 函数求解器示例。我想通过更改 XOR_INPUT 和 XOR_IDEAL 将 XOR 更改为乘数。
这里是源位置: http ://www.heatonresearch.com/wiki/Hello_World
我改变了
从:
至:
在将值更改为这些之后。我得到了无限循环并输出恒定:
纪元 #274107 错误:12.75
纪元 #274108 错误:12.75
纪元 #274109 错误:12.75
纪元 #274110 错误:12.75
纪元 #274111 错误:12.75
纪元 #274112 错误:12.75
纪元 #274113 错误:12.75
纪元 #274114 错误:12.75
纪元 #274115 错误:12.75
纪元 #274116 错误:12.75
纪元 #274117 错误:12.75
纪元 #274118 错误:12.75
纪元 #274119 错误:12.75
这是问题;
1-)这称为局部最小值吗?
2-) 我需要在 (0 和 1) 或 (-1 和 1) 之间设置值吗?
3-) 我怎样才能解决简单的乘法求解器问题?
谢谢。
java - 对未经训练的数据进行简单的神经网络乘法训练会产生很大的错误
我通过在基本网络上使用具有 sigmoid 激活函数的 encog 库制作了小型乘法神经网络。我的问题是我在未经训练的数据上遇到了很大的错误。我怎样才能更好地增强未经训练的数据。更不容易出错。
首先我尝试:train.getError() > 0.00001 到 train.getError() > 0.0000001 将错误减少到更少会产生更清晰的结果。但这并没有帮助。
增加隐藏层也没有帮助:network.addLayer(new BasicLayer(new ActivationSigmoid(),false,128));
我试图增加每层的神经元数量,但也没有帮助
我怎样才能得到更清晰的结果?
什么是偏见?什么时候使用它?
我看过: http ://www.heatonresearch.com/wiki/Activation_Function 但我只使用sigmoid。何时使用其他人或我需要更改激活功能?
这是我的代码:
这是我最后一次尝试似乎更有效但还不是很好:
neural-network - 神经网络:使用 Encog 进行分类
我正在尝试开始使用神经网络来解决分类问题。我在处理 JVM(在 Scala 中)时选择使用 Encog 3.x 库。请让我知道这个问题是否可以由另一个图书馆更好地处理。
我一直在使用弹性反向传播。我有 1 个隐藏层,例如 3 个输出神经元,每个用于 3 个目标类别。所以理想的输出是 1/0/0、0/1/0 或 0/0/1。现在,问题在于训练试图最小化错误,例如,如果理想输出为 1/0/0,则将 0.6/0.2/0.2 变为 0.8/0.1/0.1。但是由于我选择了最高值作为预测类别,这对我来说并不重要,我希望训练能够花费更多的精力来实际减少错误预测的数量。
所以我知道我应该使用softmax函数作为输出(虽然我不清楚这是否成为第4层或者我应该用softmax替换第3层的激活函数),然后让训练减少交叉熵。现在我认为这个交叉熵需要在整个网络或整个输出层上进行计算,但是ErrorFunction
可以自定义计算一个神经元一个神经元的误差(读取理想输入和实际输入的数组,写入错误值数组)。那么如何使用 Encog(或者我应该选择哪个其他基于 JVM 的库)进行交叉熵最小化呢?
c# - C# Encog 神经网络 - 尽管神经网络的总体误差较低,但预期输出与实际误差相差甚远
几天来,我一直在努力让 Encog 继续前进。
我的数据包含 4 个输入变量(介于 1 和 1000 之间)和 1 个输出变量(介于 -30 和 30 之间)。我正在使用大约 50,000 行数据进行训练。
数据经过标准化(tanh 激活函数在 -1 和 1 之间),然后将其传递到具有以下结构和训练的神经网络:
然后程序输出每一行的预期输出以及神经网络的实际输出。这是输出的屏幕截图(几行):http: //i.imgur.com/UVWCOis.png
如您所见,在打印此输出之前,误差(即所有行的神经网络的平均误差)必须低于 0.024。但是许多预期和实际输出都存在大量错误。
我相信神经网络对传播不够敏感。看起来神经网络的实际输出都非常接近,我相信因为它们与初始随机权重相差不远。
谁能建议我如何解决这个问题?
我尝试过减小输入的大小(我使用了 50 个),我还尝试过消除偏差,这两者都导致了类似的结果。
c# - 如何在 Encog.NET 中加速规范化
我有以下代码来规范我的文档。我的文档包含以下方法来规范化我的SmallShuffledTrainingData
CSV。
我只是想规范一列,因为它需要很长时间。
我的文档有 332k 行和 25 列。
除了将其分解为越来越小的文档之外,还有什么方法可以加快规范化过程?
如果我确实将其分解,我怎么可能将它们组合成一个文档,因为规范化需要查看所有记录以找到给定列的最高和最低值?
machine-learning - 选择机器学习训练方法
我有以下已经标准化的数据:
- 客户ID
- 客户年龄
- 客户位置
- 房主
- 汽车谷
- 风险因素
- 已婚
- 包装一个
- 包 b
- 包c
基于以上所有因素,我想预测哪些包;无论是 A、B 还是 C,客户都可能购买。
但是,我有点迷失在选择的海洋中。有许多训练方法,例如线性感知器、遗传算法、时间序列预测、自动关联网络等等。
我怎么知道哪一个最适合解决这种有多个输出的问题?
编辑:
我的问题是基于这样一个假设,即对于这个特定场景有一个最佳策略,因为我知道某些算法在某些场景中使用得更频繁,例如遗传算法经常在手写识别程序中使用。
java - 如何在 Java 中使用 Encog SVM 预测多个值
很久以前,我一直在使用 Encog 库研究反向传播神经网络中的预测系统,现在我一直在研究支持向量机领域,我发现它比 NN 效率更高,我的目标是测试预测如何在 SVM 中表现并将其与 BPN 进行比较。
我有两个二维数组,一个是 INPUT,一个是 IDEAL。数组的每一行由 3 个元素(1/9 到 9 之间的实数)组成。INPUT 中有 800 行对应的 IDEAL。测试集还有另外 2 个数组,有 200 行。
使用 BPN 没有问题,我用 3 个输入层神经元、50 个中间层神经元和 3 个输出层神经元训练网络(在 5 分钟内收敛,误差小于 0.01)并且测试工作正常。
另一方面,在 SVM 中,我遇到了一些问题。我训练网络,在 3 秒内收敛,它似乎工作正常,但是当我测试数据时,它预测每行输出中只有 1 个元素,而不是 BPN 中的 3 个 asi。
我不知道我做错了什么,我复制了一个简化的代码和运行的输出。
JAVA代码
输出
任何帮助将不胜感激,感谢阅读!
machine-learning - Encog查询分类
我正在尝试使用 Encog处理这个数据集。为此,我将输出合并为一个(似乎无法弄清楚如何使用多个预期输出,即使我尝试手动训练具有 4 个输出神经元的 NN 失败),其值为:“disease1”, “disease2”、“none”和“both”。
从那里开始,使用 CSV 中的分析向导,自动过程训练了具有预期输出的 NN。文件中的一个峰值:
现在我的问题是:我如何查询它?我尝试了分类,但据我所知,结果只给了我值 {0,1,2},所以有两个类我无法区分(都是 0)。
同样的问题也适用于 wiki 中的 Iris 示例。此外,Encog 如何从输出神经元值推断 0/1/2 结果?
编辑:我发现的解决方案是为疾病 1 和疾病 2 使用单独的网络,但我真的很想知道是否可以将它们组合成一个。