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(); } }