如何计算"训练数据集错误"在Encog机器学习框架中

时间:2017-11-20 10:56:26

标签: c# encog

我在测试数据集上使用CalculateGradients()source)(占我数据的30%)。请参阅下面的代码。

目标是使用testingDataSet计算的参数(70%的数据)在trainingDataSet上获取错误。

我的问题:CalculateGradients()是否独立? (因此只允许我按预期计算错误),或者是否在共享network中添加了另一个迭代,从而破坏了#34;培训数据集的隔离"?

此处Iteration()的源代码:source

代码:

public void Train(BasicNetwork network, IMLDataSet trainingDataSet, IMLDataSet testingDataSet)
{
    var trainPropagation = new ResilientPropagation(network, trainingDataSet);
    var testPropagation = new ResilientPropagation(network, testingDataSet);

    var epoch = 1;
    do
    {
        trainPropagation.Iteration();

        // !!! Trying to calculate the error on `testingDataSet` using the parameters from `trainPropagation`
        testPropagation.CalculateGradients();

        Console.WriteLine($"Epoch #{epoch}, Train error: {trainPropagation.Error}, Test error: {testPropagation.Error}" );

        if (double.IsNaN(trainPropagation.Error))
            throw new Exception("Train error was NaN");                

        epoch++;

    } while (trainPropagation.Error > _maxError);

}

0 个答案:

没有答案