【问题标题】:NeuroPh Error won't diminishNeuroPh 错误不会减少
【发布时间】:2016-04-06 06:25:04
【问题描述】:

我正在创建一个水位预测网络。我正在为 Windows 使用 NeuroPh 2.91。我将网络设置为 3 个输入,因为它接受 3 个输入,即水位、降雨量和流入量。我使用多层感知器,tanh 作为传递函数,反向传播作为学习规则,有 9 个隐藏神经元。

我总是有这个输出:

Starting neural network training...
Training network try using data set adminshet
Training error: null

并且根据图表的总网络错误是 20,000+ 。 我应该怎么办?我对 ANN 和 Neuroph 真的很陌生。

【问题讨论】:

  • 这似乎不是一个编程问题,而是一个如何使用现有程序“NeuroPh”的问题。

标签: artificial-intelligence neural-network


【解决方案1】:

我在这里遇到了同样的问题。类似的设置。当我强烈限制最大迭代时,它对我有用。例如到 10。 这让我觉得,NeurophStudio 中存在错误。

对我有用的小提示: 自己做!打开 Eclipse,添加一个项目,添加 Neuroph jar 并构建您的网络。这很难,但这完全符合预期。您必须将自己的结果转储到 csv 文件中并用 Excel 显示。但是 ANN 处理不能仅仅通过“点击一个 gui”来工作。

package de.sauer.dispe;

import org.neuroph.core.Layer;
import org.neuroph.core.NeuralNetwork;
import org.neuroph.core.Neuron;
import org.neuroph.core.data.DataSet;
import org.neuroph.core.transfer.Linear;
import org.neuroph.core.transfer.Tanh;
import org.neuroph.nnet.MultiLayerPerceptron;
import org.neuroph.nnet.learning.BackPropagation;

public class DirSpeCntrl {

    private static final int MAX_ITER = 2000;
    private static final double MAX_ERROR = 0.005;
    private static final double LEARNING_RATE = 0.1;

    public static void main(String[] args) {
        System.out.println("Create ANN");
        NeuralNetwork<BackPropagation> nn = new MultiLayerPerceptron(3, 15, 15, 1);

        // Setting ALL neurons to TanH transferfunction (important, if you have negativ values)
        Layer[] layers = nn.getLayers();
        for(Layer curLayer: layers) {
            for(Neuron curNeuron: curLayer.getNeurons()) {
                curNeuron.setTransferFunction(new Tanh());
            }
        }

        for(Neuron curNeuron: layers[3].getNeurons()) {
            curNeuron.setTransferFunction(new Linear());
        }

        nn.randomizeWeights();

        System.out.println("Load Sampledata...");
        DataSet ds = DataSet.createFromFile(
                "C:\\Users\\meist_000\\Documents\\Thesis\\vanilla_eng.csv", 
                3, 1, ";");

        System.out.println("done: "+ds.getRows().size()+". Learn...");

        // Setting stuff
        BackPropagation lr = new BackPropagation();
        lr.setLearningRate(LEARNING_RATE);
        lr.setMaxIterations(MAX_ITER);
        lr.setTrainingSet(ds);
        lr.setNeuralNetwork(nn);
        nn.setLearningRule(lr);

//      bla.learn(ds); Faster bulk operation...

        // Slower single operation with logging:
        for(int i=0;i<MAX_ITER;i++) {
            lr.doLearningEpoch(ds);
            double curError = lr.getTotalNetworkError();
            System.out.println(curError);

            if(curError < MAX_ERROR) {
                System.out.println("Stopped on "+i);
                break;
            }
        }

        // Testing the network
        nn.setInput(new double[] {0.080484492, -0.138512128, -0.140826873});
        nn.calculate();
        double[] prediction = nn.getOutput();
        System.out.println("Pred: "+prediction[0]);
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 2011-12-25
    • 2015-01-19
    相关资源
    最近更新 更多