gpt4 book ai didi

Java - Encog 3.2 - RPROP网络不更新权重

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:12 25 4
gpt4 key购买 nike

我研究了很多问题和例子,但我似乎无法找出我的 RPROP NN 出了什么问题。这也是我第一次使用 Encog,所以我想知道是否是我做错了。

我正在尝试通过向网络提供图像(50x50)来训练网络识别猫,然后将其转换为灰度并向网络提供输入 double[][] 以及目标 double[][]。我注意到错误始终为 4.0,因此我在每次训练迭代时都执行了 dumpWeights() 来查看发生了什么。我注意到权重始终为零。然后我回到基础知识,看看我做的事情是否正确,因此我针对异或问题对其进行了修改:

//////////First created the network:

BasicNetwork network = new BasicNetwork();

network.addLayer(new BasicLayer(null, true, 2));
network.addLayer(new BasicLayer(new ActivationBiPolar(), true, 2));
network.addLayer(new BasicLayer(new ActivationBiPolar(), false, 1));

network.getStructure().finalizeStructure();
network.reset();

//////Then created my data set and target vector (ideal vector) and fed it to a new RPROP training class:

final double targetVector[][] = { { -1 }, { 1.0 }, { 1.0 }, { -1 } };
final double inputData[][] = { { -1, -1 }, { 1.0, -1 },{ -1, 1.0 }, { 1.0, 1.0 } };

MLDataSet trainingSet = new BasicMLDataSet(inputData, targetVector);

final ResilientPropagation train = new ResilientPropagation(network, trainingSet);

///////train network

int epoch = 1;

do{
train.iteration();
System.out.println("Epoch #" + epoch + " Error : " + train.getError()) ;
epoch++;

System.out.println(network.dumpWeights());

}while(train.getError() > 0.01) ;
train.finishTraining();

System.out.println("End of training");

我得到以下输出,注意 0.0 行是 network.dumpWeights() 方法的结果:

纪元 #132636 错误:2.00,0,0,0,0,0,0,0,0纪元 #132637 错误:2.00,0,0,0,0,0,0,0,0纪元 #132638 错误:2.00,0,0,0,0,0,0,0,0纪元 #132639 错误:2.00,0,0,0,0,0,0,0,0纪元 #132640 错误:2.0

...等等。

有什么明显的事情可以看出我在这里做错了吗?我还尝试了 2-3-1 架构作为 XORHelloWorld.java 示例的实现。

任何帮助将不胜感激。

最佳答案

尝试将隐藏层切换为 TANH 激活函数,如下所示:

network.addLayer(new BasicLayer(null, true, 2));
network.addLayer(new BasicLayer(new ActivationTANH(), true, 2));
network.addLayer(new BasicLayer(new ActivationBiPolar(), false, 1));

通过此更改,我可以使上面的示例收敛。我认为如果你使用 -1 到 1 作为输入,它会比 Sigmoid 更好。可以使用线性激活函数(即 ActivationBiPolar 作为输出激活函数),但您需要诸如 sigmoid/tanh 之类的东西作为隐藏函数。不像线性函数那样只返回 1.0 作为导数。

关于Java - Encog 3.2 - RPROP网络不更新权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26778854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com