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

Neural network 神经网络:使用Encog进行分类,neural-network,encog,Neural Network,Encog,我正在尝试使用神经网络来解决分类问题。在处理JVM(Scala)时,我选择使用Encog3.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。但是,由于我选择了最高值作为预测类别,这对我来说并不重要,我希望培训花费更多的精力来实际减少错误预测的

我正在尝试使用神经网络来解决分类问题。在处理JVM(Scala)时,我选择使用Encog3.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函数作为输出(虽然我不清楚这是否成为第四层,或者我应该用softmax替换第三层的激活函数),然后让训练减少交叉熵。现在我认为交叉熵需要在整个网络或整个输出层上进行计算,但是可以定制的
ErrorFunction
可以逐个神经元计算误差(读取理想输入和实际输入的数组,写入误差值的数组)。那么,如何使用Encog(或者我应该选择哪个基于JVM的库)实现交叉熵最小化呢?

我也在使用Encog,但在Java中,尽管我认为这并没有真正的区别。我有类似的问题,据我所知,你们必须编写自己的函数来最小化交叉熵


据我所知,softmax应该取代您的第三层。

好吧,如何正确编写交叉熵最小化误差函数正是问题所在。有什么想法吗?如果你有一个Java实现,那很好。嗨,这两个链接现在已经失效了。你有这两个网页的最新链接吗?对不起,我找不到。