java - 艾尔曼网络不停

标签 java machine-learning neural-network encog

我的 Elman 网络对 XOR 运算符的训练不会停止,它会进行数百万次迭代。任何帮助将不胜感激!

package org.encog.example;

import org.encog.Encog;
import org.encog.engine.network.activation.ActivationSigmoid;
import org.encog.ml.train.MLTrain;
import org.encog.neural.data.NeuralDataSet;
import org.encog.neural.data.basic.BasicNeuralDataSet;
import org.encog.neural.networks.BasicNetwork;
import org.encog.neural.networks.training.propagation.back.Backpropagation;
import org.encog.neural.pattern.ElmanPattern;

public class XORRNN {

    // 4 row, 2 column
    public static double XOR_INPUT[][] = { { 0.0, 0.0 }, { 1.0, 0.0 },
            { 0.0, 1.0 }, { 1.0, 1.0 } };

    // 4 row, 1 column
    public static double XOR_IDEAL[][] = { { 0.0 }, { 1.0 }, { 1.0 }, { 0.0 } };

    public static void main(String[] args) {

        //create Elman RNN
        ElmanPattern elmanPattern = new ElmanPattern();
        elmanPattern.setInputNeurons(2);
        elmanPattern.addHiddenLayer(4);
        elmanPattern.setOutputNeurons(1);
        elmanPattern.setActivationFunction(new ActivationSigmoid());
        BasicNetwork network = (BasicNetwork) elmanPattern.generate();

        //read training data
        NeuralDataSet trainingSet = new BasicNeuralDataSet(XOR_INPUT, XOR_IDEAL);

        //set training method
        MLTrain train = new Backpropagation(network, trainingSet, 0.000001, 0.0);


        //training
        int epoch = 1;

        do{
            train.iteration();          
            System.out.println("Iteration: " + epoch + ", Error: " + train.getError());
            epoch ++;
        }while(train.getError() > 0.01);

        //shut down
        Encog.getInstance().shutdown();
    }
}

最佳答案

如果您想训练非时间序列的东西,请尝试使用前馈神经网络。仅靠 Elman 和 4 个训练集元素不会取得很大成功。如果您想要了解如何为 Elman 构建 XOR 数据的示例,请参阅以下内容:

https://github.com/encog/encog-java-examples/blob/master/src/main/java/org/encog/examples/neural/recurrent/elman/ElmanXOR.java

关于java - 艾尔曼网络不停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26836729/

相关文章:

java - 从Android中的文本中提取关键字

algorithm - 与神经网络中的几个输出节点相比,具有多个输出节点的优点或缺点是什么

python - 具有 LSTM 单元的 Keras RNN,用于基于多个输入时间序列预测多个输出时间序列

根据其他用户的喜好查找用户喜欢的东西的算法

java - 如何在我的线程中断后立即中断 RestTemplate 调用?

java - 关于 Android 中 Java 类对象和从一个 Activity 到另一个 Activity 的数据传输的查询

java - 如何在 headless 远程 Linux 服务器上运行应用程序并在本地 Windows 计算机上查看 UI

java - 致命异常 : main ViewPager mPager = (ViewPager) findViewById(R. id.view_pager)

machine-learning - 如何在tensorflow train API中使用我自己的激活函数?

python - 无法在 tensorflow 中实现可重复性