0

私はどこかでずっと前に見つけた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 はデータの最小値、max はデータの最大値である必要があります。設定した最大値よりも高い値を持つ新しいデータを取得した場合はどうなりますか? このメソッドを書き直して、最初からトレーニングを開始する必要がありますか?

これが間違っている場合は、正しい方向に向けてください。

4

1 に答える 1

0

私の記憶が正しければ、スケーリングはトレーニング データの特徴範囲だけでなく、可能なすべてのデータ特徴範囲にも適用されます。つまり、トレーニング セットの機能に最小値 - 25 と最大値 - 45 があるが、実際には 1 から 1000 の範囲である可能性がある場合、スケーリングは xMin = 1、xMax = 1000 で実行されるため、値は変更できません。

次の式を使用してみてください: scaledX = (X - minX)/(maxX - minX)、ここで、minX\maxX - 入力フィーチャごとの最小値と最大値

于 2012-05-19T14:44:14.430 に答える