基于Encog的神经网络分类器

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

培训部分有什么问题吗?我希望有人能指导我是否正确地做事。


你好,我想问一下,除了训练输入之外,你如何使用其他示例来测试你的网络?谢谢。 - user2886091
1个回答

3
你的意思是指当你尝试识别与你训练时完全相同的数据时,你不能识别它吗?如果是这样的话,我认为你在测试和训练过程中编码图像的方式存在差异。
如果你看到与你训练的不同的数据出现错误结果,这是一个不同的(且常见的)问题。这意味着训练数据可能不代表整个问题空间,即你使用的新数据与训练数据足够不同,无法进行匹配。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接