C# 神经网络定标输入和除垢输出

C# 神经网络定标输入和除垢输出,c#,neural-network,encog,C#,Neural Network,Encog,我在很久以前的某个地方找到了缩放NN输入和缩放NN输出的方法,但我不确定它们是否有效,我正在使用NN的encog库: public static double Scale(double X) { double fieldlow = 0; double fieldhigh = 1; double min = 1; double max = 2; //double

我在很久以前的某个地方找到了缩放NN输入和缩放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输入和输出的范围(我不确定,但看起来像ActivationAnh的范围0-1),min应该是数据中的最低值,max应该是数据中的最高值。我很好奇,如果你得到的新数据的值比你设定的最大值高怎么办?你必须重写这个方法,从一开始就开始训练


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

如果我没记错,缩放不仅适用于训练数据功能范围,而且适用于所有可能的数据功能范围。这意味着,若训练集中的特性的最小值为-25,最大值为-45,但实际上可以是1到1000,那个么缩放将在xMin=1,xMax=1000时执行 所以值不能改变

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