【问题标题】:Encog Neural Network Error Never ChangingEncog 神经网络错误永远不会改变
【发布时间】:2014-03-21 11:20:08
【问题描述】:

我开始使用神经网络。我已经修改了为我自己的目的提供的 XOR 示例,但是当我运行它时,错误永远不会改变。

我试图近似的函数需要 4 个双精度并输出 1 个双精度,4 个输入始终为正,输出可以为负或正(多数为正)。对于初学者,我使用 50 条记录来训练数据。

工作 XOR(每次迭代都会减少错误)

    public static double[][] XORInput = {
        new[] {0.0, 0.0},
        new[] {1.0, 0.0},
        new[] {0.0, 1.0},
        new[] {1.0, 1.0}
    };

    public static double[][] XORIdeal = {
        new[] {0.0},
        new[] {1.0},
        new[] {1.0},
        new[] {0.0}
    };

    BasicNetwork network = new BasicNetwork();
    network.AddLayer(new BasicLayer(null, true, 2));
    network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 3));
    network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, 1));
    network.Structure.FinalizeStructure();
    network.Reset();

    IMLDataSet trainingData = new BasicMLDataSet(XORInput, XORIdeal);

    IMLTrain train = new ResilientPropagation(Network, trainingData);

不工作(错误永远不会消失):

    BasicNetwork network = new BasicNetwork();
    network.AddLayer(new BasicLayer(null, true, 4));
    network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 6));
    network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, 1));
    network.Structure.FinalizeStructure();
    network.Reset();

    IMLDataSet trainingData = new BasicMLDataSet(myInput, myExpectedOutput);

    IMLTrain train = new ResilientPropagation(Network, trainingData);

一些训练数据的样本记录:

    Input:          
    2.54, 3.15, 3.4, 1.73
    5.3, 1.78, 3.9, 2.04
    1.71, 5.4, 4.3, 2.26
    1.62, 6.4, 4, 1.89
    1.45, 8.4, 5.2, 2.14

    Output:
    5.59
    11.05
    6.89
    10.4
    -0.56

我认为问题在于激活函数没有触发。我认为这可能是因为 ActivationSigmoid() 不适合这个问题,但我尝试了 ActivationTANH() 得到完全相同的结果。

【问题讨论】:

    标签: c# neural-network encog


    【解决方案1】:

    问题是我的价值观没有被规范化。

    要使用激活函数,您的所有输入和输出都必须介于 1 和 0 (ActivationSigma) 以及 -1 和 1 (ActivationTANH) 之间。您需要一些函数来将您的值标准化为它们需要的范围。

    这个链接对我有很大帮助:

    http://www.heatonresearch.com/wiki/Range_Normalization

    【讨论】:

    • Encog.Util.Arrayutil.NormalizeArray 此命名空间包含用于规范化的 Encog 实用程序
    猜你喜欢
    • 1970-01-01
    • 2013-11-19
    • 2012-10-18
    • 2014-09-03
    • 2019-06-26
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多