Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

カスタム深層学習層の定義

ヒント

このトピックでは、問題に合わせてカスタム深層学習層を定義する方法を説明します。Deep Learning Toolbox™ に組み込まれている層の一覧については、深層学習層の一覧を参照してください。

タスクに合わせて独自のカスタム深層学習層を定義できます。カスタム出力層を使用してカスタム損失関数を指定できます。また、学習可能なパラメーターと状態パラメーターを含むカスタム層や、それらを含まないカスタム層を定義できます。カスタム層を定義した後、その層の有効性、GPU 互換性、および定義した勾配の出力の正しさをチェックできます。

このトピックでは、深層学習層のアーキテクチャと、タスクに使用するカスタム層を定義する方法を説明します。

種類説明
中間層

カスタム深層学習層を定義し、オプションの学習可能なパラメーターと状態パラメーターを指定します。

詳細については、カスタム深層学習中間層の定義を参照してください。

学習可能なパラメーターを含むカスタム層の定義方法の例については、学習可能なパラメーターを含むカスタム深層学習層の定義を参照してください。複数の入力があるカスタム層の定義方法を示す例については、複数の入力があるカスタム深層学習層の定義を参照してください。

分類出力層

カスタム分類出力層を定義し、損失関数を指定します。

詳細については、カスタム深層学習出力層の定義を参照してください。

カスタム分類出力層を定義し、損失関数を指定する方法を示す例については、カスタム分類出力層の定義を参照してください。

回帰出力層

カスタム回帰出力層を定義し、損失関数を指定します。

詳細については、カスタム深層学習出力層の定義を参照してください。

カスタム回帰出力層を定義し、損失関数を指定する方法を示す例については、カスタム回帰出力層の定義を参照してください。

層テンプレート

以下のテンプレートを使用して、新しい層を定義できます。

 中間層テンプレート

 分類出力層テンプレート

 回帰出力層テンプレート

中間層のアーキテクチャ

学習時には、ネットワークのフォワード パスとバックワード パスが反復して実行されます。

ネットワークのフォワード パスでは、各層は前の層の出力を取り、関数を適用し、結果を次の層に出力 (順伝播) します。また、LSTM 層などのステートフルな層では、層の状態を更新します。

層は複数の入力または出力を持つことができます。たとえば、層は複数の前の層から X1、…、XN を受け取り、出力 Z1、…、ZM を後続の層に順伝播できます。

ネットワークのフォワード パスの最後に、出力層は予測 Y とターゲット T の間の損失 L を計算します。

ネットワーク経由のバックワード パスでは、それぞれの層は、層の出力についての損失の微分を受け取り、入力についての損失 L の微分を計算し、その結果を逆伝播します。層に学習可能なパラメーターがある場合、層は層の重み (学習可能なパラメーター) の微分も計算します。層は、重みの微分を使用して学習可能なパラメーターを更新します。

次の図は、深層ニューラル ネットワークにおけるデータのフローを説明するもので、1 つの入力 X、1 つの出力 Z、および学習可能なパラメーター W がある層経由のデータ フローを強調しています。

Network diagram showing the flow of data through a neural network during training.

カスタム中間層の詳細については、カスタム深層学習中間層の定義を参照してください。

出力層のアーキテクチャ

学習時のフォワード パスの最後で、出力層は前の層の出力 (ネットワーク予測) Y を受け取り、これらの予測と学習ターゲットの間の損失 L を計算します。出力層は、予測 Y について損失 L の微分を計算し、結果を前の層に出力 (逆伝播) します。

次の図は、ニューラル ネットワークおよび出力層におけるデータのフローを示しています。

Network diagram showing the flow of data through a neural network during training.

詳細については、カスタム深層学習出力層の定義を参照してください。

カスタム層の有効性のチェック

カスタム深層学習層を作成する場合、関数 checkLayer を使用して、層が有効であることをチェックできます。この関数は、層について、有効性、GPU 互換性、勾配定義の正しさ、コード生成の互換性をチェックします。層が有効であることをチェックするには、次のコマンドを実行します。

checkLayer(layer,layout)
layer は層のインスタンス、layout は層への入力に対して有効なサイズとデータ形式を指定する networkDataLayout オブジェクトです。複数の観測値をチェックするには、ObservationDimension オプションを使用します。コード生成の互換性チェックを実行するには、CheckCodegenCompatibility オプションを 1 (true) に設定します。入力サイズが大きい場合、勾配チェックの実行に時間がかかります。チェックを高速化するには、指定する有効な入力サイズを小さくします。

詳細については、カスタム層の有効性のチェックを参照してください。

参考

| | | | | | | | | |

関連するトピック