2012-05-19 39 views
0

我有缩放NN的输入和除垢输出的方法,我在什么地方找到很久以前的事,但我不知道它们是否有效,即时通讯使用encog库NN:神经网络缩放输入和除垢输出

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应该是数据中的最低值和数据中的最高最高值。我很好奇,如果你得到新的数据值高,然后你设置最大值?你必须重写这些方法并从头开始训练?

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

回答

0

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

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

+0

谢谢,我会试试! – formatc