0

ネットワークの合計エラーは、100,000回を超える反復で変更されませんでした。 入力は22個の値で、出力は単一の値です。入力配列は[195] [22]、出力配列は[195] [1]です。Encog Backpropagationエラーが変更されない

BasicNetwork network = new BasicNetwork(); 
    network.addLayer(new BasicLayer(null,true,22)); 
    network.addLayer(new BasicLayer(new ActivationSigmoid(),true,10)); 
    network.addLayer(new BasicLayer(new ActivationSigmoid(),false,1)); 
    network.getStructure().finalizeStructure(); 
    network.reset(); 


    MLDataSet training_data = new BasicMLDataSet(input, target_output); 
    final Backpropagation train = new Backpropagation(network, training_data); 

    int epoch = 1; 

    do { 
     train.iteration(); 

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

     epoch++; 
    } 

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

このコードで何が問題になっていますか?

答えて

0

ネットワークを分類しようとしているデータが小さすぎて、検索スペースを線形に分離可能な問題に変換できない場合があります。だから、より多くのニューロンやレイヤーを追加してみてください - これはおそらく訓練に時間がかかります。それが既に線形分離可能でない場合、NNはこれを解決する非効率的な方法かもしれません。

また、NNがエラーサーフェス上でローカルミニマムに落ちると、トレーニング戦略はありません。 encogユーザーガイドhttps://s3.amazonaws.com/heatonresearch-books/free/Encog3Java-User.pdfを参照してください。pg 166にはトレーニング戦略のリストがあります。

final int strategyCycles = 50; 
final double strategyError = 0.25; 
train.addStrategy(new ResetStrategy(strategyError,strategyCycles)); 
関連する問題