无论输入如何,网络都会产生相同的输出

时间:2016-05-03 20:02:27

标签: java machine-learning neural-network encog

public static double testElmanWithAnnealing(NeuralDataSet trainingSet, 
        NeuralDataSet validation,int maxEpoch)
{
    // create an elman network
    ElmanPattern pattern = new ElmanPattern();
    pattern.setActivationFunction(new ActivationTANH());
    pattern.setInputNeurons(trainingSet.getInputSize());
    pattern.addHiddenLayer(8);
    pattern.setOutputNeurons(trainingSet.getIdealSize());
    BasicNetwork network = (BasicNetwork)pattern.generate();
    network.reset();

    // set up a hybrid strategy of resilient + simulated annealing
    CalculateScore score = new TrainingSetScore(trainingSet)
    final MLTrain trainAlt = new NeuralSimulatedAnnealing(
            network, score, 10, 2, 100);
    final MLTrain trainMain = 
            new ResilientPropagation(network, trainingSet);
    trainMain.addStrategy(
            new HybridStrategy(trainAlt,0.00001,100,3));

    int epoch = 0;
    do {
        trainMain.iteration();
        System.out
                .println("Epoch #" + epoch + " Error:" + trainMain.getError());
        epoch++;
    } while(trainMain.getError() > 0.01 && epoch < maxEpoch);

    int trueStuff = 0;
    int falseStuff = 0;
    for(MLDataPair pair: validation ) {
        final MLData output =  network.compute(pair.getInput());
        System.out.println(
                "actual=" + output.getData(0) + ",ideal=" + pair.getIdeal().getData(0));
        if(output.getData(0) * pair.getIdeal().getData(0) > 0)
            trueStuff++;
        else
            falseStuff++;
    }
    System.out.println("true classifications:" + trueStuff);
    System.out.println("false classifications:" + falseStuff);

    return network.calculateError(validation);
}

我有8个使用简单规范化的浮点变量输入 最小/最大方案为-1到1之间的值。

尝试分类为负值或正值(二进制分类)。因此,在训练和验证集中,理想值为1或-1。

网络始终生成相同的结果,或者可能有一两个结果。例如:-0.05686225929855484大约90%的时间和偶尔的其他一些值。

  1. 我使用encog错了吗?代码中的任何内容都可以作为一个错误突显出来吗?
  2. 我可以做任何事来惩罚神经网络的这种行为吗?
  3. 这比随机猜测更糟糕,肯定有一种方法可以获得更好的预测。 提前致谢。

0 个答案:

没有答案