3

私は機械学習に不慣れで、画像を使用してオブジェクトを分類するJavaアプリケーションに取り組んでいます。40個の入力ニューロンとn個の出力ニューロンがあります(トレーニングデータの数によって異なります)。ニューラルネットワークのフレームワークとしてEncogを使用しました。データのトレーニングは成功しましたが、ネットワークをテストしているため、うまく機能していないようです。オブジェクトを正しく分類できません。トレーニングの部分は次のとおりです。

BasicNetwork network = new BasicNetwork();
    network.addLayer(new BasicLayer(null,true,i));
    network.addLayer(new BasicLayer(new ActivationSigmoid(),true,h));
    network.addLayer(new BasicLayer(new ActivationSigmoid(),false,o));      
    network.getStructure().finalizeStructure();
    network.reset();


    // train the neural network
    final Backpropagation train = new Backpropagation(network, trainingSet, lr, 0.3);
    train.fixFlatSpot(false);

    w = new SwingWorker(){

        @Override
        protected Object doInBackground() throws Exception {            
            // learn the training set

            int epoch = 1;
            do {
                train.iteration();
                //System.out.println("Epoch #" + epoch + " Error:" + train.getError());
                epoch++;
            } while(train.getError() > me && !isStop);
            isStop = false;
        return null;
        }
    };
    w.execute();

およびテスト部分:

BasicNetwork network = (BasicNetwork) SerializeObject.load(new File("file/Weights.ser"));
    MLData input = new BasicMLData(inputCount);
    input.setData(in);
    MLData output = network.compute(input);
    for(int y = 0; y < output.size(); y++){
        System.out.println(output.getData(y));
    }

トレーニング部分に何か問題がありますか?私が正しい方法で物事をしているなら、誰かが私を導いてくれることを願っています。

4

1 に答える 1

3

トレーニングしたのとまったく同じデータを認識しようとしても、認識できないということですか? この場合、テスト用とトレーニング用に画像をエンコードする方法に違いがあると思います。

トレーニングに使用したデータとは異なるデータで悪い結果が表示される場合、これは別の (そして一般的な) 問題です。これは、トレーニング データが問題空間全体を表していない可能性があることを意味します。つまり、使用している新しいデータがトレーニング データと十分に異なっているため、一致していません。

于 2013-04-19T20:32:33.117 に答える