我有用于缩放 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 范围),最小值应该是数据中的最小值,而最大值应该是数据中的最大值。我很好奇,如果您获得的新数据的值高于您设置的最大值怎么办?你必须重写这个方法并从头开始训练?
如果这是错误的,请指出我正确的方向。