Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

ディープ ネットワーク デザイナーへのカスタム層のインポート

この例では、ディープ ネットワーク デザイナーでカスタム重み付き分類層をインポートし、それを事前学習済みのネットワークに追加する方法を示します。クラスの分布が不均衡な分類問題用の重み付き分類層を使用します。

カスタム重み付き分類層を定義します。この層を作成するには、ファイル weightedClassificationLayer.m を現在のフォルダーに保存します。この層の作成の詳細については、を参照してください。

2 つのクラスをもつデータ セットがあるとします。クラスの重みは、2 つのクラスに対応する 2 つの要素をもつベクトルとして指定します。

classWeights = [0.2 0.8];

層のインスタンスを作成します。

 weightedOutputLayer = weightedClassificationLayer(classWeights);

事前学習済みの GoogLeNet ネットワークでディープ ネットワーク デザイナーを開きます。

deepNetworkDesigner(googlenet);

事前学習済みのネットワークを適応させるには、最後の学習可能な層と最終分類層を新しいデータ セットに適応させた新しい層に置き換えます。GoogLeNet では、これらの層の名前はそれぞれ 'loss3-classifier''output' です。

[デザイナー] ペインで、新しい fullyConnectedLayer[層のライブラリ] からキャンバスにドラッグします。OutputSize を新しいクラス数 (この例では 2) に設定します。

学習率を編集して、新しい層での学習速度を転移層より速くします。WeightLearnRateFactor および BiasLearnRateFactor10 に設定します。最後の全結合層を削除し、代わりに新しい層を結合します。

次に、出力層をカスタム重み付き出力層に置き換えます。[デザイナー] ペインで [新規] をクリックします。[ワークスペースから] で一時停止し、[インポート] をクリックします。カスタム重み付き分類層をインポートするには、weightedOutputLayer を選択して [OK] をクリックします。

[追加] をクリックして、その層を GoogLeNet の現在の事前学習済みのネットワークに追加します。アプリによって [デザイナー] ペインの上部にカスタム層が追加されます。新しい層を表示するには、マウスを使用してズームインするか、[ズームイン] をクリックします。

カスタム層を [デザイナー] ペインの下部にドラッグします。最終分類出力層を新しい重み付き出力層に置き換え、新しい層と結合します。

[解析] をクリックしてネットワークを確認します。深層学習ネットワーク アナライザーによってエラー 0 が報告されていれば、ネットワークの学習の準備は整っています。

ネットワークの作成が完了すれば、データのインポートと学習を行うことができます。ディープ ネットワーク デザイナーでデータをインポートして学習させる方法の詳細については、ディープ ネットワーク デザイナーを使用した転移学習を参照してください。

参考

関連するトピック