このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MATLAB による深層学習モデルの学習
さまざまな方法で深層学習モデルの学習とカスタマイズを行うことができます。たとえば、新しいデータを使用して事前学習済みのモデルに再学習させたり (転移学習)、ネットワークにゼロから学習させたり、深層学習モデルを関数として定義してカスタム学習ループを使用したりすることができます。このフロー チャートを使用して、自分のタスクに最適な学習手法を選択できます。
ヒント
オブジェクト検出用などのコンピューター ビジョンのワークフローに関する詳細については、コンピューター ビジョンを参照してください。TensorFlow™-Keras、Caffe、および ONNX™ (Open Neural Network Exchange) モデル形式からネットワークやネットワーク アーキテクチャをインポートする方法の詳細については、外部のプラットフォームからの事前学習済みのネットワークを参照してください。
学習手法
次の表に、さまざまな学習手法の詳細を示します。
手法 | 詳細 |
---|---|
ネットワークを直接使用する | 必要なタスクが事前学習済みのネットワークによって既に実行されている場合、そのネットワークに再学習させる必要はありません。代わりに、関数 例については、GoogLeNet を使用したイメージの分類を参照してください。 |
trainingOptions および trainet または trainNetwork を使用してネットワークに学習させる | 層配列または層グラフとしてネットワークが指定されており、必要なオプションが関数 ネットワークの再学習 (転移学習) を行う方法を示す例については、新しいイメージを分類するための深層学習ネットワークの学習を参照してください。ネットワークにゼロから学習させる方法を示す例については、分類用のシンプルな深層学習ニューラル ネットワークの作成を参照してください。 |
dlnetwork オブジェクトとカスタム学習ループを使用してネットワークに学習させる | ほとんどのタスクでは、関数 出力層を使用して指定できない損失関数の場合、カスタム学習ループで損失を指定できます。 カスタム学習率スケジュールでネットワークに学習させる方法を示す例については、カスタム学習ループを使用したネットワークの学習を参照してください。 詳細については、カスタム学習ループ、損失関数、およびネットワークの定義を参照してください。 |
モデル関数とカスタム学習ループを使用してネットワークに学習させる | 層グラフを使用して作成できないネットワークの場合、カスタム ネットワークを関数として定義できます。関数として定義される深層学習モデルの学習を行う方法を示す例については、モデル関数を使用したネットワークの学習を参照してください。 ネットワークの一部を層グラフを使用して作成できる場合、それらの部分を層グラフとして定義し、サポートされていない部分をモデル関数を使用して定義することができます。 |
判定
次の表に、フロー チャート内の各判定に関する詳細を示します。
判定 | 詳細 |
---|---|
Deep Learning Toolbox™ には、適切な事前学習済みのネットワークが用意されているか | ほとんどのタスクでは、 MATLAB® の事前学習済みの深層学習ネットワークの一覧については、事前学習済みの深層ニューラル ネットワークを参照してください。事前学習済みのネットワークは、新しいデータを使って直接使用するか、別のタスクで使用できるように新しいデータを使用して再学習 (転移学習) させることができます。 |
再学習せずにネットワークを使用できるか | 必要なタスクが事前学習済みのネットワークによって既に実行されている場合、再学習させることなくそのネットワークを直接使用できます。たとえば、 ネットワークに再学習させる必要がある場合 (異なるクラスのセットに分類する場合など)、転移学習を使用してネットワークに再学習させることができます。 |
モデルを層配列または層グラフとして定義できるか | ほとんどの深層学習モデルは、層配列または層グラフとして指定できます。すなわち、層の出力が他の層の入力に接続された層の集合としてモデルを定義できます。 ネットワークのアーキテクチャによっては、層グラフとして定義することができません。たとえば、シャム ネットワークは、重みを共有する必要があり、層グラフとして定義できません。そのようなネットワークでは、モデルを関数として定義しなければなりません。例については、モデル関数を使用したネットワークの学習を参照してください。 |
ネットワークの出力は 1 つだけか | 複数の出力をもつネットワークの場合、カスタム学習ループを使用してネットワークに学習させなければなりません。例については、複数の出力をもつネットワークの学習を参照してください。 |
必要な中間層が Deep Learning Toolbox に用意されているか | Deep Learning Toolbox には、深層学習タスク用の層が数多く用意されています。層の一覧については、深層学習層の一覧を参照してください。 必要な中間層 (ネットワークの中間にある層) が Deep Learning Toolbox に用意されている場合、それらの層を使用して層配列または層グラフとしてネットワークを定義できます。そうでない場合は、サポートされていない層をカスタム層として定義してみてください。詳細については、カスタム深層学習層の定義を参照してください。 |
サポートされていない中間層をカスタム層として定義できるか | 必要な層が Deep Learning Toolbox に用意されていない場合、カスタム深層学習層を定義してみることができます。詳細については、カスタム深層学習層の定義を参照してください。 サポートされていない層をカスタム層として定義できる場合、これらのカスタム層を層配列または層グラフに含めることができます。そうでない場合は、関数を使用して深層学習モデルを指定し、カスタム学習ループを使用してモデルに学習させます。例については、モデル関数を使用したネットワークの学習を参照してください。 |
必要な出力層が Deep Learning Toolbox に用意されているか | 出力層では、学習に使用する損失関数を指定します。Deep Learning Toolbox には、深層学習タスク用のさまざまな出力層が用意されています。たとえば、 必要な出力層が Deep Learning Toolbox に用意されている場合、これらの層を使用して層グラフとしてネットワークを定義できます。そうでない場合は、サポートされていない出力層をカスタム層として定義してみてください。詳細については、カスタム深層学習層の定義を参照してください。 |
サポートされていない出力層をカスタム層として定義できるか | 必要な出力層が Deep Learning Toolbox に用意されていない場合、カスタム出力層を定義してみることができます。詳細については、カスタム深層学習層の定義を参照してください。 サポートされていない出力層をカスタム出力層として定義できる場合、これらのカスタム層を層配列または層グラフに含めることができます。そうでない場合は、 |
必要なオプションが関数 trainingOptions に用意されているか | 関数 カスタム学習率スケジュールなど、必要な学習オプションが関数 |
参考
trainingOptions
| trainNetwork