1

XOR 演算子の Elman ネットワーク トレーニングは停止せず、数百万回の反復に実行されます。どんな助けでも大歓迎です!

パッケージ org.encog.example;

org.encog.Encog をインポートします。
org.encog.engine.network.activation.ActivationSigmoid をインポートします。
org.encog.ml.train.MLTrain をインポートします。
org.encog.neural.data.NeuralDataSet をインポートします。
import org.encog.neural.data.basic.BasicNeuralDataSet;
org.encog.neural.networks.BasicNetwork をインポートします。
import org.encog.neural.networks.training.propagation.back.Backpropagation;
org.encog.neural.pattern.ElmanPattern をインポートします。

公開クラス XORRNN {

    // 4 行 2 列
    public static double XOR_INPUT[][] = { { 0.0, 0.0 }, { 1.0, 0.0 },
            {0.0、1.0}、{1.0、1.0}};

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

    public static void main(String[] args) {

        //Elman RNN を作成する
        ElmanPattern elmanPattern = new ElmanPattern();
        elmanPattern.setInputNeurons(2);
        elmanPattern.addHiddenLayer(4);
        elmanPattern.setOutputNeurons(1);
        elmanPattern.setActivationFunction(新しいActivationSigmoid());
        BasicNetwork ネットワーク = (BasicNetwork) elmanPattern.generate();

        //トレーニングデータを読む
        NeuralDataSet trainingSet = new BasicNeuralDataSet(XOR_INPUT, XOR_IDEAL);

        //トレーニング方法を設定
        MLTrain train = new Backpropagation(network, trainingSet, 0.000001, 0.0);


        //トレーニング
        int エポック = 1;

        行う{
            列車.繰り返し();          
            System.out.println("反復: " + エポック + "、エラー: " + train.getError());
            エポック++;
        }while(train.getError() > 0.01);

        //シャットダウン
        Encog.getInstance().shutdown();
    }
}

4

1 に答える 1

0

時系列ではないものをトレーニングする場合は、フィードフォワード ニューラル ネットワークを使用してみてください。Elman と 4 つのトレーニング セット要素だけでは、あまり成功しません。Elman の XOR データを構造化する方法の例が必要な場合は、次を参照してください。

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

于 2014-11-11T00:53:23.483 に答える