このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
カスタム深層学習層の定義
ヒント
このトピックでは、問題に合わせてカスタム深層学習層を定義する方法を説明します。Deep Learning Toolbox™ に組み込まれている層の一覧については、深層学習層の一覧を参照してください。
タスクに合わせて独自のカスタム深層学習層を定義できます。カスタム出力層を使用してカスタム損失関数を指定できます。また、学習可能なパラメーターと状態パラメーターを含むカスタム層や、それらを含まないカスタム層を定義できます。カスタム層を定義した後、その層の有効性、GPU 互換性、および定義した勾配の出力の正しさをチェックできます。
このトピックでは、深層学習層のアーキテクチャと、タスクに使用するカスタム層を定義する方法を説明します。
種類 | 説明 |
---|---|
中間層 | カスタム深層学習層を定義し、オプションの学習可能なパラメーターと状態パラメーターを指定します。 詳細については、カスタム深層学習中間層の定義を参照してください。 学習可能なパラメーターを含むカスタム層の定義方法の例については、学習可能なパラメーターを含むカスタム深層学習層の定義を参照してください。複数の入力があるカスタム層の定義方法を示す例については、複数の入力があるカスタム深層学習層の定義を参照してください。 |
分類出力層 | カスタム分類出力層を定義し、損失関数を指定します。 詳細については、カスタム深層学習出力層の定義を参照してください。 カスタム分類出力層を定義し、損失関数を指定する方法を示す例については、カスタム分類出力層の定義を参照してください。 |
回帰出力層 | カスタム回帰出力層を定義し、損失関数を指定します。 詳細については、カスタム深層学習出力層の定義を参照してください。 カスタム回帰出力層を定義し、損失関数を指定する方法を示す例については、カスタム回帰出力層の定義を参照してください。 |
層テンプレート
以下のテンプレートを使用して、新しい層を定義できます。
中間層のアーキテクチャ
学習時には、ネットワークのフォワード パスとバックワード パスが反復して実行されます。
ネットワークのフォワード パスでは、各層は前の層の出力を取り、関数を適用し、結果を次の層に出力 (順伝播) します。また、LSTM 層などのステートフルな層では、層の状態を更新します。
層は複数の入力または出力を持つことができます。たとえば、層は複数の前の層から X1、…、XN を受け取り、出力 Z1、…、ZM を後続の層に順伝播できます。
ネットワークのフォワード パスの最後に、出力層は予測 Y とターゲット T の間の損失 L を計算します。
ネットワーク経由のバックワード パスでは、それぞれの層は、層の出力についての損失の微分を受け取り、入力についての損失 L の微分を計算し、その結果を逆伝播します。層に学習可能なパラメーターがある場合、層は層の重み (学習可能なパラメーター) の微分も計算します。層は、重みの微分を使用して学習可能なパラメーターを更新します。
次の図は、深層ニューラル ネットワークにおけるデータのフローを説明するもので、1 つの入力 X、1 つの出力 Z、および学習可能なパラメーター W がある層経由のデータ フローを強調しています。
カスタム中間層の詳細については、カスタム深層学習中間層の定義を参照してください。
出力層のアーキテクチャ
学習時のフォワード パスの最後で、出力層は前の層の出力 (ネットワーク予測) Y を受け取り、これらの予測と学習ターゲットの間の損失 L を計算します。出力層は、予測 Y について損失 L の微分を計算し、結果を前の層に出力 (逆伝播) します。
次の図は、ニューラル ネットワークおよび出力層におけるデータのフローを示しています。
詳細については、カスタム深層学習出力層の定義を参照してください。
カスタム層の有効性のチェック
カスタム深層学習層を作成する場合、関数 checkLayer
を使用して、層が有効であることをチェックできます。この関数は、層について、有効性、GPU 互換性、勾配定義の正しさ、コード生成の互換性をチェックします。層が有効であることをチェックするには、次のコマンドを実行します。
checkLayer(layer,layout)
layer
は層のインスタンス、layout
は層への入力に対して有効なサイズとデータ形式を指定する networkDataLayout
オブジェクトです。複数の観測値をチェックするには、ObservationDimension
オプションを使用します。コード生成の互換性チェックを実行するには、CheckCodegenCompatibility
オプションを 1
(true) に設定します。入力サイズが大きい場合、勾配チェックの実行に時間がかかります。チェックを高速化するには、指定する有効な入力サイズを小さくします。詳細については、カスタム層の有効性のチェックを参照してください。
参考
functionLayer
| checkLayer
| setLearnRateFactor
| setL2Factor
| getLearnRateFactor
| getL2Factor
| findPlaceholderLayers
| replaceLayer
| assembleNetwork
| PlaceholderLayer
| networkDataLayout