神经网络:使用Encog进行分类

时间:2014-04-07 16:54:28

标签: neural-network encog

我正在尝试使用神经网络来解决分类问题。当我正在使用JVM(在Scala中)时,我选择使用Encog 3.x库。如果其他图书馆能够更好地处理这个问题,请告诉我。

我一直在使用弹性反向传播。我有1个隐藏层,例如3个输出神经元,3个目标类别中的每一个。所以理想的输出是1/0 / 0,0 / 0/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的库)实际进行交叉熵最小化呢?

1 个答案:

答案 0 :(得分:0)

我也在使用Encog,但是在Java中,虽然我认为它不会产生真正的影响。我有类似的问题,据我所知,你必须编写自己的函数,以尽量减少交叉熵。

据我了解,softmax应该只是替换你的第三层。