神经网络缩放输入和除垢输出

时间:2012-05-19 14:17:58

标签: c# neural-network encog

我有很长时间以前在某处发现的NN输入和缩减输出的方法,但我不确定它们是否有效,我使用了NN的encog库:

public static double Scale(double X)
        {
            double fieldlow = 0;
            double fieldhigh = 1;
            double min = 1;
            double max = 2;
            //double max = 10000;
            double temp = ((X - min) / (max - min)) * (fieldhigh - fieldlow) + fieldlow;
            return temp;
        }
        public static double DeScale(double X)
        {
            double fieldlow = 0;
            double fieldhigh = 1;
            double min = 1;
            double max = 2;
            //double max = 10000;
            double temp = ((min - max) * X - fieldhigh * min + max * fieldlow) / (fieldlow - fieldhigh);
            return temp;
        }

假设fieldlow和fieldhigh是NN输入和输出的范围(我不确定但看起来像ActivationTANH的0-1范围),min应该是数据中的最低值,并且是数据中的最大值。我很好奇如果你获得的数据值更高,那么你设置的最大值是多少?你必须重写这些方法并从头开始训练吗?

如果这是错误的,请指出正确的方向。

1 个答案:

答案 0 :(得分:0)

如果我没记错的话,缩放不仅适用于训练数据功能范围,还适用于所有可能的数据功能范围。这意味着如果训练集中的特征具有最小值 - 25和最大 - 45,但实际上可以是1到1000,则scalling执行xMin = 1,xMax = 1000 所以价值不能改变

尝试使用以下公式:scaledX =(X - minX)/(maxX - minX),其中minX \ maxX - 每个输入要素的最小值和最大值