多入力および多出力ネットワーク
Deep Learning Toolbox™ では、複数の出力 (たとえば、複数のソースおよびタイプのデータで学習させたネットワーク) または複数の出力 (たとえば、分類および回帰の両方の応答を予測するネットワーク) があるネットワーク アーキテクチャを定義できます。
多入力ネットワーク
ネットワークに複数のソースまたは異なる形式のデータが必要な場合に、複数の入力があるネットワークを定義します。たとえば、複数のセンサーから異なる解像度で取得されたイメージ データを必要とするネットワークです。
複数の入力がある深層学習ネットワークの定義と学習を行うには、dlnetwork
オブジェクトを使用してネットワーク アーキテクチャを指定し、関数 trainnet
を使用して学習させます。
複数の入力がある学習済み深層学習ネットワークで予測を行うには、関数 minibatchpredict
を使用します。次のいずれかを使用して複数の入力を指定します。
combinedDatastore
オブジェクトtransformedDatastore
オブジェクト複数の数値配列
イメージと特徴の両方の入力をもつネットワークに学習させる方法を説明する例については、イメージ データおよび特徴データにおけるネットワークの学習を参照してください。
多出力ネットワーク
異なる形式の複数の応答を必要とするタスク用に、複数の出力があるネットワークを定義します。たとえば、カテゴリカル出力と数値出力の両方を必要とするタスクです。
複数の出力がある深層学習ネットワークに学習させるには、関数 trainnet
とカスタム損失関数を使用します。たとえば、予測ラベルとターゲット ラベルのクロスエントロピー損失と、予測数値応答とターゲット数値応答の平均二乗誤差の合計に対応する損失を定義するには、次の損失関数を使用します。
lossFcn = @(Y1,Y2,T1,T2) crossentropy(Y1,T1) + mse(Y2,T2);
関数 trainnet
を使用して、カスタム損失関数でニューラル ネットワークに学習させます。
net = trainnet(dsTrain,net,lossFcn,options);
複数の出力がある学習済み深層学習ネットワークで予測を行うには、関数 minibatchpredict
を使用します。
例については、複数の出力をもつネットワークの学習を参照してください。
多入力ネットワークおよび多出力ネットワークでのデータストアの使用
複数の入力層または複数の出力をもつネットワークに学習させるには、combine
関数と transform
関数を使用して、(numInputs
+ numOutputs
) 列の cell 配列を出力するデータストアを作成します。ここで、numInputs
はネットワーク入力の数、numOutputs
はネットワーク出力の数です。最初の numInputs
個の列は各入力の予測子を指定し、最後の numOutputs
個の列は応答を指定します。ニューラル ネットワークの InputNames
プロパティと OutputNames
プロパティによって、それぞれ入力と出力の順序が決まります。
minibatchpredict
関数を使用した推論の場合、データストアの read 関数が予測子に対応する列を返す限り、データストアは有効です。minibatchpredict
関数は最初の numInputs
個の列を使用し、後続の列を無視します。ここで、numInputs
はネットワーク入力層の数です。
参考
trainnet
| trainingOptions
| dlnetwork
| minibatchpredict
| predict
| scores2label