Main Content

mapminmax

行の最小値と最大値を [-1 1] にマッピングして行列を処理

説明

ヒント

深層学習ワークフローのデータを再スケーリングするには、入力層に名前と値のペア Normalization を使用します。

[Y,PS] = mapminmax(X,YMIN,YMAX) は、NQ 列の行列 X と、オプションで YYMIN、および YMAX の各行の最小値と最大値を取り、NQ 列の行列 Y、および値の一貫した処理を可能にする処理設定 PS を返します。

mapminmax は、各行の最小値と最大値を [YMIN, YMAX] に正規化することによって行列を処理します。

[Y,PS] = mapminmax(X,FP) は、struct としてパラメーター FP.yminFP.ymax を取ります。

Y = mapminmax('apply',X,PS) は、X と設定 PS を指定すると、Y を返します。

X = mapminmax('reverse',Y,PS) は、Y と設定 PS を指定すると、X を返します。

dx_dy = mapminmax('dx_dy',X,Y,PS) は、微分の逆数を返します。

すべて折りたたむ

この例では、各行の最小値と最大値が既定の区間 [-1,+1] にマッピングされるように行列を構成する方法を示します。

x1 = [1 2 4; 1 1 1; 3 2 2; 0 0 0]
[y1,PS] = mapminmax(x1)

次に、新しい値に同じ処理設定を適用します。

x2 = [5 2 3; 1 1 1; 6 7 3; 0 0 0]
y2 = mapminmax('apply',x2,PS)

y1 の処理を逆にして、x1 を再取得します。

x1_again = mapminmax('reverse',y1,PS)

入力引数

すべて折りたたむ

処理する行列。NQ 列の行列として指定します。

出力行列 Y の各行の最小値。スカラーとして指定します。

出力行列 Y の各行の最大値。スカラーとして指定します。

出力引数

すべて折りたたむ

処理された行列。NQ 列の行列として返されます。

値の一貫した処理を可能にする処理設定。構造体として返されます。

詳細

すべて折りたたむ

mapminmax を使用した入力およびターゲットの正規化

学習の前に、入力とターゲットが常に指定の範囲内になるようにスケーリングすると役に立つことがよくあります。関数 mapminmax は、入力とターゲットが範囲 [–1,1] に収まるようにスケーリングします。次のコードは、この関数の使用方法を説明しています。

[pn,ps] = mapminmax(p);
[tn,ts] = mapminmax(t);
net = train(net,pn,tn);

元のネットワークの入力とターゲットは、行列 p および t に指定されています。返される正規化された入力 pn およびターゲット tn は、すべて区間 [–1,1] に収まります。構造体 ps および ts は設定を含みます。この場合は、元の入力とターゲットの最小値と最大値です。ネットワークの学習が終わったら、設定 ps を使用して、ネットワークに適用される将来の入力を変換する必要があります。これらは、ネットワークの重みおよびバイアスと同様に、実質的にネットワークの一部になります。

mapminmax を使用してターゲットをスケーリングした場合、範囲 [–1,1] で出力を生成するようにネットワーク出力の学習が行われます。これらの出力を、元のターゲットに使用されたものと同じ単位に戻すには、設定 ts を使用します。次のコードは、前のコードで学習が行われたネットワークのシミュレーションを行ってから、ネットワーク出力を元の単位に戻します。

an = sim(net,pn);
a = mapminmax('reverse',an,ts);

ネットワーク出力 an は、正規化されたターゲット tn に対応します。正規化されていないネットワーク出力 a の単位は、元のターゲット t と同じです。

mapminmax を使用して学習セット データを前処理する場合、学習済みネットワークを新しい入力で使用する場合は常に、設定 ps に格納されている、学習セットに対して計算された最小値と最大値で前処理しなければなりません。次のコードは、新しい一連の入力を学習済みのネットワークに適用します。

pnewn = mapminmax('apply',pnew,ps);
anewn = sim(net,pnewn);
anew = mapminmax('reverse',anewn,ts);

feedforwardnet を含むほとんどのネットワークでは、これらのステップは自動的に行われるため、必要なのは sim コマンドを使用することだけです。

アルゴリズム

X は有限の実数値のみを取り、各行の要素がすべて等しいとは限らないと仮定します。(xmax=xmin の場合、または xmaxxmin のいずれかが非有限である場合、y=x となり、変更は発生しません)。

y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;

バージョン履歴

R2006a で導入