主要内容

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

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

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

checkLayer(层、validInputSize ObservationDimension,昏暗的)
ここで,は層の电子邮箱ンスタンス,validInputSizeは層に有効な入力サ电子细胞ズを指定するベクトルまたは细胞配列であり,昏暗的は層の入力デ,タにおける観測値の次元を指定します。入力サesc escズが大きい場合,勾配チェックの実行に時間がかかります。テストを高速化するには、指定する有効な入力サイズを小さくします。

層の有効性のチェック

例のカスタム層preluLayerの有効性をチェックします。

カスタムPReLU層を定義します。この層を作成するには,ファpreluLayer.mを現在のフォルダ,に保存します。

層の电子邮箱ンスタンスを作成し,checkLayerを使用して,それが有効であることをチェックします。有効な入力サ▪▪▪ズを,層への1▪▪の観測値入力の典型的なサ▪▪ズに設定します。単一入力の場合,層にはサhxwxcの観測値が必要です。hw,およびcは,それぞれ前の層の出力の高さ,幅,およびチャネル数です

validInputSizeを入力配列の典型的なサ@ @ズとして指定します。

图层= preluLayer(20,“prelu”);validInputSize = [5 5 20];validInputSize checkLayer(层)
跳过多观察测试。要启用带有多个观测值的测试,请指定“ObservationDimension”选项。对于二维图像数据,将‘ObservationDimension’设置为4。对于3d图像数据,将“ObservationDimension”设置为5。对于序列数据,将“ObservationDimension”设置为2。跳过GPU测试。没有找到兼容的GPU设备。跳过代码生成兼容性测试。要检查代码生成层的有效性,请指定'CheckCodegenCompatibility'和'ObservationDimension'选项。运行nnet.checklayer.TestLayerWithoutBackward ......... Done nnet.checklayer.TestLayerWithoutBackward __________ Test Summary: 9 Passed, 0 Failed, 0 Incomplete, 13 Skipped. Time elapsed: 0.14482 seconds.

この結果は,パスしたテスト,失敗したテスト,およびスキップされたテストの数を示しています“ObservationsDimension”オプションを指定しない場合,またはgpuがない場合,この関数は対応するテストをスキップします。

複数の観測値のチェック

複数観測値入力の場合,層にはサhxwxcxNの観測値の配列が必要です。hw,およびcは,それぞれ高さ,幅,およびチャネル数,Nは観測値の数です。

複数の観測値にいて層の有効性をチェックするには,観測値の典型的なサズを指定し,“ObservationDimension”を4に設定します。

图层= preluLayer(20,“prelu”);validInputSize = [5 5 20];validInputSize checkLayer(层,“ObservationDimension”4)
跳过GPU测试。没有找到兼容的GPU设备。跳过代码生成兼容性测试。要检查代码生成层的有效性,请指定'CheckCodegenCompatibility'和'ObservationDimension'选项。运行nnet.checklayer.TestLayerWithoutBackward .......... ...完成nnet.checklayer.TestLayerWithoutBackward __________测试总结:13通过,0失败,0不完整,9跳过。时间流逝:0.05196秒。

この場合,関数で層に関する問題はまったく検出されていません。

テストの一覧

関数checkLayerは,一連のテストを実行して,カスタム層の有効性をチェックします。

中間層

関数checkLayerは,以下のテストを使用してカスタム中間層(タescプnnet.layer.Layerの層)の有効性をチェックします。

テスト 説明
functionSyntaxesAreCorrect 層関数の構文が正しく定義されています。
predictDoesNotError 预测でエラ,が発生しません。
forwardDoesNotError

指定されている場合,向前でエラ,が発生しません。

forwardPredictAreConsistentInSize

向前が指定されている場合,向前および预测が同じサ@ @ズの値を出力します。

backwardDoesNotError 指定されている場合,落后的でエラ,が発生しません。
backwardIsConsistentInSize

落后的が指定されている場合,落后的の出力のサ@ @ズが整合しています。

  • 各入力にいての微分が,対応する入力と同じサズです。

  • それぞれの学習可能なパラメタにいての微分が,対応する学習可能なパラメタと同じサズです。

predictIsConsistentInType

预测の出力の型は,入力と整合性があります。

forwardIsConsistentInType

向前が指定されている場合,向前の出力の型は,入力と整合性があります。

backwardIsConsistentInType

落后的が指定されている場合,落后的の出力の型は,入力と整合性があります。

gradientsAreNumericallyCorrect 落后的が指定されている場合,落后的で計算された勾配が数値勾配と整合します。
backwardPropagationDoesNotError 落后的が指定されていない場合,自動微分を使用して微分を計算できます。
codegenPragmaDefinedInClassDef コ,ド生成のプラグマ“% # codegen”は,クラスファ。
checkFor金宝appSupportedLayerPropertiesForCodegen 層のプロパティによってコ,ド生成がサポ,トされます。
predictIsValidForCodeGeneration 预测はコ,ド生成に対して有効です。

テストpredictIsConsistentInTypeforwardIsConsistentInType,およびbackwardIsConsistentInTypeは,gpu互換性もチェックします。層関数をgpuで実行するには,これらの関数が,基となるデ,タ型がであるgpuArray型の入力と出力をサポ,トしていなければなりません。

出力層

関数checkLayerは,以下のテストを使用してカスタム出力層(タescプnnet.layer.ClassificationLayerまたはnnet.layer.RegressionLayerの層)の有効性をチェックします。

テスト 説明
forwardLossDoesNotError forwardLossでエラ,が発生しません。
backwardLossDoesNotError backwardLossでエラ,が発生しません。
forwardLossIsScalar forwardLossの出力がスカラ,です。
backwardLossIsConsistentInSize backwardLossが指定されている場合,backwardLossの出力がサ@ @ズにおいて次に整合します。dLdYは予測Yと同じサ@ @ズです。
forwardLossIsConsistentInType

forwardLossの出力が型において次に整合します。损失は予測Yと同じ型です。

backwardLossIsConsistentInType

backwardLossが指定されている場合,backwardLossの出力が型において次に整合します。dLdYは予測Yと同じ型でなければなりません。

gradientsAreNumericallyCorrect backwardLossが指定されている場合,backwardLossで計算された勾配が数値的に正しいものです。
backwardPropagationDoesNotError backwardLossが指定されていない場合,自動微分を使用して微分を計算できます。

forwardLossIsConsistentInTypeおよびbackwardLossIsConsistentInTypeテストは,gpu互換性もチェックします。層関数をgpuで実行するには,これらの関数が,基となるデ,タ型がであるgpuArray型の入力と出力をサポ,トしていなければなりません。

生成されたデ,タ

層の有効性をチェックするために,関数checkLayerは,層のタ。

層のタ@ @プ 生成されるデ,タの説明
中間 [-1,1]の範囲の値
回帰出力 [-1,1]の範囲の値を持予測とタゲット
分類出力

[0,1]の範囲の値を持予測。

“ObservationDimension”オプションを指定した場合,ターゲットは一个炎热符号化されたベクトル(1をつ含み,それ以外は0のベクトル)です。

“ObservationDimension”オプションを指定しない場合,タ,ゲットは[0,1]の範囲の値です。

複数の観測値にいてチェックするには,名前と値のペア“ObservationDimension”を使用して観測値の次元を指定します。観測値の次元を指定した場合,関数checkLayerは,サイズ1および2のミニバッチで生成されたデータを使用して,層関数が有効であることをチェックします。この名前と値のペアを指定しない場合,関数は,複数の観測値について層関数が有効であることをチェックするテストをスキップします。

診断

checkLayerを使用してテストに失敗した場合,この関数はテスト診断とフレ,ムワ,ク診断を表示します。テスト診断は,層で見かった問題を示します。フレ,ムワ,ク診断は,より詳細な情報を提供します。

関数の構文

テストfunctionSyntaxesAreCorrectは,層関数の構文が正しく定義されているかをチェックします。

テスト診断 説明 考えられる解決策
在图层中“预测”的输入参数数量不正确 関数预测の構文が,層入力の数と整合していません。

预测に正しい数の入力引数と出力引数を指定します。

预测の構文は[Z1,…,Zm] = predict(layer,X1,…,Xn)です。ここで,X1,…,Xnn個の層入力,Z1,…,Zm评选個の層出力です。値nおよびは,層のNumInputsプロパティおよびNumOutputsプロパティに対応しなければなりません。

ヒント

预测への入力の数が変化する可能性がある場合,X1,…,Xnではなく变长度输入宗量を使用します。この場合,变长度输入宗量は入力のcell配列です。ここで,变长度输入宗量{我}西に対応します。出力の数が変化する可能性がある場合、Z1,…,Zm评选ではなくvarargoutを使用します。この場合,varargoutは出力のcell配列です。ここで,varargout {j}Zjに対応します。

ヒント

学習可能なパラメ,タ,のdlnetworkオブジェクトがカスタム層にある場合,カスタム層の関数预测内で,dlnetworkの関数预测を使用します。dlnetworkオブジェクトの関数预测を使用すると,ソフトウェアは必ず適切な層処理を選択して予測を行います。

在图层中“预测”输出参数的数量不正确 関数预测の構文が,層出力の数と整合していません。
在图层中“转发”的输入参数数量不正确 オプションの関数向前の構文が,層入力の数と整合していません。

向前に正しい数の入力引数と出力引数を指定します。

向前の構文は[Z1,…,Zm,memory] = forward(layer,X1,…,Xn)です。ここで,X1,…,Xnn個の層入力,Z1,…,Zm评选個の層出力,内存は層のメモリです。

ヒント

向前への入力の数が変化する可能性がある場合,X1,…,Xnではなく变长度输入宗量を使用します。この場合,变长度输入宗量は入力のcell配列です。ここで,变长度输入宗量{我}西に対応します。出力の数が変化する可能性がある場合、Z1,…,Zm评选ではなくvarargoutを使用します。この場合,varargoutは出力のcell配列です。ここで,j= 1,…,NumOutputsにいてvarargout {j}Zjに対応し,varargout{NumOutputs + 1}内存に対応します。

ヒント

学習可能なパラメ,タ,のdlnetworkオブジェクトがカスタム層にある場合,カスタム層の関数向前内で,dlnetworkオブジェクトの関数向前を使用します。dlnetworkオブジェクトの関数向前を使用すると,ソフトウェアは必ず適切な層処理を選択して学習を行います。

在图层中“forward”的输出参数数量不正确 オプションの関数向前の構文が,層出力の数と整合していません。
在图层中“向后”的输入参数数量不正确 オプションの関数落后的の構文が,層入力および層出力の数と整合していません。

落后的に正しい数の入力引数と出力引数を指定します。

落后的の構文は[dLdX1,…,dLdXn, dLdW1,…,dLdWk] =向后(Z1,层,X1,…,Xn…,Zm评选,dLdZ1,…,dLdZm,内存)です。ここで,次のようになります。

  • X1,…,Xnn個の層入力

  • Z1,…,Zm评选は層の順方向関数の個の出力

  • dLdZ1,…,dLdZmは次の層から逆伝播された勾配

  • 向前が定義された場合,内存向前のメモリ出力。そうでない場合,内存[]

出力において,dLdX1,…,dLdXnは層入力にいての損失の微分で,dLdW1,…,dLdWkk個の学習可能なパラメタにいての損失の微分です。フォワードパスとバックワードパスの間に使用されない変数が保存されることを防いでメモリ使用量を削減するには,対応する入力引数をに置き換えます。

ヒント

落后的への入力の数が変化する可能性がある場合,の後に入力引数ではなく变长度输入宗量を使用します。この場合,变长度输入宗量は入力のcell配列です。ここで,= 1,…,NumInputsにいて变长度输入宗量{我}西に対応し,j= 1,…,NumOutputsにいて变长度输入宗量{NumInputs + j}および变长度输入宗量{NumInputs + NumOutputs + j}はそれぞれZjおよびdLdZjに対応し,变长度输入宗量{结束}内存に対応します。

出力の数が変化する可能性がある場合,出力引数ではなくvarargoutを使用します。この場合,varargoutは出力のcell配列です。ここで,= 1,…,NumInputsにいてvarargout{我}dLdXit= 1,…,kにいてvarargout {NumInputs + t}dLdWtに対応します。kは学習可能なパラメ,タ,の数です。

ヒント

層の順方向関数がdlarrayオブジェクトをサポ,トしている場合,逆方向関数が自動的に決定されるため,関数落后的を指定する必要はありません。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

在图层中“向后”的输出参数数量不正确 オプションの関数落后的の構文が,層出力の数と整合していません。

複数の入力または出力がある層の場合,層プロパティNumInputs(または)InputNames)およびNumOutputs(または)OutputNames)の値を層のコンストラクタ,関数にそれぞれ設定しなければなりません。

複数の観測値

関数checkLayerは,1の観測値または複数の観測値に。複数の観測値にいてチェックするには,名前と値のペア“ObservationDimension”を使用して観測値の次元を指定します。観測値の次元を指定した場合,関数checkLayerは,サイズ1および2のミニバッチで生成されたデータを使用して,層関数が有効であることをチェックします。この名前と値のペアを指定しない場合,関数は,複数の観測値について層関数が有効であることをチェックするテストをスキップします。

テスト診断 説明 考えられる解決策
跳过多观察测试。要启用多个观测值的检查,请在checkLayer中指定'ObservationDimension'参数 checkLayer“ObservationDimension”パラメーターを指定しない場合,この関数は,複数の観測値のあるデータをチェックするテストをスキップします。

コマンドcheckLayer(层、validInputSize ObservationDimension,昏暗的)を使用します。ここで,はカスタム層の电子邮箱ンスタンス,validInputSizeは層に有効な入力サ电子邮箱ズを指定するベクトルであり,昏暗的は層の入力における観測値の次元を指定します。

詳細にいては,图层输入大小を参照してください。

関数でエラ,が発生しない

以下のテストは,有効なサズの入力デタを渡した場合に層でエラが発生しないかをチェックします。

中間層-テストpredictDoesNotErrorforwardDoesNotError,およびbackwardDoesNotErrorは,有効なサ。観測値の次元を指定している場合,関数は,観測値が1つと複数の両方の場合について層をチェックします。

テスト診断 説明 考えられる解決策
函数'predict'抛出一个错误: サereplicationズvalidInputSizeのデ,タを渡したときに関数预测でエラ,が発生しました。

框架的诊断セクションに記載されているエラ,に対処します。

ヒント

層の順方向関数がdlarrayオブジェクトをサポ,トしている場合,逆方向関数が自動的に決定されるため,関数落后的を指定する必要はありません。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

函数'forward'抛出一个错误: サereplicationズvalidInputSizeのデ,タを渡したときにオプションの関数向前でエラ,が発生しました。
函数'backward'抛出一个错误: 预测の出力を渡したときにオプションの関数落后的でエラ,が発生しました。

出力層-テストforwardLossDoesNotErrorおよびbackwardLossDoesNotErrorは,有効なサ。観測値の次元を指定している場合,関数は,観測値が1つと複数の両方の場合について層をチェックします。

テスト診断 説明 考えられる解決策
函数'forwardLoss'抛出一个错误: サereplicationズvalidInputSizeのデ,タを渡したときに関数forwardLossでエラ,が発生しました。

框架的诊断セクションに記載されているエラ,に対処します。

ヒント

関数forwardLossdlarrayオブジェクトをサポ,トしている場合,逆方向損失関数が自動的に決定されるため,関数backwardLossを指定する必要はありません。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

函数'backwardLoss'抛出一个错误: サereplicationズvalidInputSizeのデ,タを渡したときにオプションの関数backwardLossでエラ,が発生しました。

出力のサ@ @ズが整合している

以下のテストは,層関数の出力のサ。

中間層-テストbackwardIsConsistentInSizeは,関数落后的が正しいサ@ @ズの微分を出力するかをチェックします。

落后的の構文は[dLdX1,…,dLdXn, dLdW1,…,dLdWk] =向后(Z1,层,X1,…,Xn…,Zm评选,dLdZ1,…,dLdZm,内存)です。ここで,次のようになります。

  • X1,…,Xnn個の層入力

  • Z1,…,Zm评选は層の順方向関数の個の出力

  • dLdZ1,…,dLdZmは次の層から逆伝播された勾配

  • 向前が定義された場合,内存向前のメモリ出力。そうでない場合,内存[]

出力において,dLdX1,…,dLdXnは層入力にいての損失の微分で,dLdW1,…,dLdWkk個の学習可能なパラメタにいての損失の微分です。フォワードパスとバックワードパスの間に使用されない変数が保存されることを防いでメモリ使用量を削減するには,対応する入力引数をに置き換えます。

ヒント

落后的への入力の数が変化する可能性がある場合,の後に入力引数ではなく变长度输入宗量を使用します。この場合,变长度输入宗量は入力のcell配列です。ここで,= 1,…,NumInputsにいて变长度输入宗量{我}西に対応し,j= 1,…,NumOutputsにいて变长度输入宗量{NumInputs + j}および变长度输入宗量{NumInputs + NumOutputs + j}はそれぞれZjおよびdLdZjに対応し,变长度输入宗量{结束}内存に対応します。

出力の数が変化する可能性がある場合,出力引数ではなくvarargoutを使用します。この場合,varargoutは出力のcell配列です。ここで,= 1,…,NumInputsにいてvarargout{我}dLdXit= 1,…,kにいてvarargout {NumInputs + t}dLdWtに対応します。kは学習可能なパラメ,タ,の数です。

微分dLdX1、……dLdXnは,対応する層入力と同じサdLdW1,…,dLdWkは、対応する学習可能なパラメ、タ、と同じサ、ズでなければなりません。これらのサイズは,単一の観測値および複数の観測値をもつ入力データに対し,整合していなければなりません。

テスト診断 説明 考えられる解決策
“向后”的“dLdX”大小不正确 層入力にいての損失の微分は,対応する層入力と同じサズでなければなりません。

対応する層入力X1,…,Xnと同じサ@ @ズの微分dLdX1,…,dLdXnを返します。

对于“向后”的输入“in1”,损失的导数大小不正确
“forward”返回的“Z”的大小必须与“predict”相同 预测の出力は,向前の対応する出力と同じサ@ @ズでなければなりません。

向前の対応する出力Z1,…,Zm评选と同じサ@ @ズの预测の出力Z1,…,Zm评选を返します。

对于“向后”,损失对“W”的导数大小不正确 学習可能なパラメーターについての損失の微分は,対応する学習可能なパラメーターと同じサイズでなければなりません。

対応する学習可能なパラメタW1,…,工作と同じサ@ @ズの微分dLdW1,…,dLdWkを返します。

ヒント

層の順方向関数がdlarrayオブジェクトをサポ,トしている場合,逆方向関数が自動的に決定されるため,関数落后的を指定する必要はありません。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

出力層-テストforwardLossIsScalarは,関数forwardLossの出力がスカラ,であるかをチェックします。関数backwardLossが指定されている場合,テストbackwardLossIsConsistentInSizeforwardLossおよびbackwardLossの出力のサ@ @ズが正しいかをチェックします。

forwardLossの構文は,损失(层,Y, T)です。入力Yは,ネットワ,クで行った予測に対応します。これらの予測は前の層の出力です。入力Tは学習タ,ゲットに対応します。出力损失は,指定された損失関数に従ったYTの間の損失です。出力损失はスカラ,でなければなりません。

関数forwardLossdlarrayオブジェクトをサポ,トしている場合,逆方向損失関数が自動的に決定されるため,関数backwardLossを指定する必要はありません。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

backwardLossの構文は,dLdY = backwardLoss(layer, Y, T)です。入力Yはネットワ,クで行った予測を含み,Tは学習タ,ゲットを含みます。出力dLdYは予測Yにいての損失の微分です。出力dLdYは,層入力Yと同じサ@ @ズでなければなりません。

テスト診断 説明 考えられる解決策
“forwardLoss”的“loss”大小不正确 forwardLossの出力损失はスカラ,でなければなりません。

出力损失をスカラ,として返します。たとえば,損失に複数の値がある場合,的意思是または总和を使用できます。

'backwardLoss'损失'dLdY'的导数大小不正确 backwardLossが指定されている場合,層入力にいての損失の微分は,層入力と同じサズでなければなりません。

層入力Yと同じサ@ @ズの微分dLdYを返します。

関数forwardLossdlarrayオブジェクトをサポ,トしている場合,逆方向損失関数が自動的に決定されるため,関数backwardLossを指定する必要はありません。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

デタ型の整合性とgpu互換性

以下のテストは,層関数の出力の型が整合しているかと層関数がgpu互換かをチェックします。

層の順方向関数がdlarrayオブジェクトを完全にサポ,トしている場合,層は,gpu互換です。そうでない場合,gpu互換にするには,層関数が入力をサポ,トし,gpuArray(并行计算工具箱)型の出力を返さなければなりません。

多くのmatlab®組み込み関数が入力引数gpuArray(并行计算工具箱)およびdlarrayをサポ,トしています。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。Gpuで実行される関数の一覧にいては,Gpuでのmatlab関数の実行(并行计算工具箱)を参照してください。深層学習にgpuを使用するには,サポトされているgpuデバスもなければなりません。サポトされているデバスにいては,リリス別のgpuサポト(并行计算工具箱)を参照してください。Matlabでのgpuの使用の詳細は,Matlabでのgpu計算(并行计算工具箱)を参照してください。

中間層-テストpredictIsConsistentInTypeforwardIsConsistentInType,およびbackwardIsConsistentInTypeは,層関数が正しいデ,タ型の変数を出力するかをチェックします。これらのテストは,デ,タ型の入力や,基となる型がまたはであるデ,タ型gpuArrayの入力があったときに,層関数が整合性のあるデ,タ型を返すかをチェックします。

ヒント

0のような関数を使用して配列を事前に割り当てる場合,これらの配列のデータ型が層関数の入力と一致していることを確認しなければなりません。別の配列と同じデ,タ型のゼロの配列を作成するには,0“喜欢”オプションを使用します。たとえば,配列Xと同じデタ型でサズが深圳のゼロの配列を初期化するには,Z = 0 (sz,'like',X)を使用します。

テスト診断 説明 考えられる解決策
predict的Z类型不正确 関数预测の出力Z1,…,Zm评选の型は,入力X1,…,Xnと整合性がなければなりません。

入力X1,…,Xnと同じ型の出力Z1,…,Zm评选を返します。

“predict”的输出类型“out1”不正确
forward的Z类型不正确 オプションの関数向前の出力Z1,…,Zm评选の型は,入力X1,…,Xnと整合性がなければなりません。
“forward”的输出类型“out1”不正确
“向后”的“dLdX”类型不正确 オプションの関数落后的の微分dLdX1,…,dLdXnの型は,入力X1,…,Xnと整合性がなければなりません。

入力X1,…,Xnと同じ型の微分dLdX1,…,dLdXnを返します。

对于'backward',损失对输入'in1'的导数类型不正确
对“向后”的“W”损失的导数类型不正确 学習可能なパラメーターについての損失の微分の型は,対応する学習可能なパラメーターと整合性がなければなりません。

各学習可能なパラメタにいて,対応する学習可能なパラメタと同じ型の微分を返します。

ヒント

層の順方向関数がdlarrayオブジェクトをサポ,トしている場合,逆方向関数が自動的に決定されるため,関数落后的を指定する必要はありません。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

出力層-テストforwardLossIsConsistentInTypeおよびbackwardLossIsConsistentInTypeは,層関数が正しいデ,タ型の変数を出力するかをチェックします。これらのテストは,デ,タ型の入力や,基となる型がまたはであるデ,タ型gpuArrayの入力があったときに,層が整合性のあるデ,タ型を返すかをチェックします。

テスト診断 説明 考えられる解決策
'forwardLoss'的'loss'类型不正确 関数forwardLossの出力损失の型は,入力Yと整合性がなければなりません。

入力Yと同じ型の损失を返します。

'backwardLoss'的'dLdY'的导数类型不正确 オプションの関数backwardLossの出力dLdYの型は,入力Yと整合性がなければなりません。

入力Yと同じ型のdLdYを返します。

ヒント

関数forwardLossdlarrayオブジェクトをサポ,トしている場合,逆方向損失関数が自動的に決定されるため,関数backwardLossを指定する必要はありません。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

正しい勾配

テストgradientsAreNumericallyCorrectは,層関数で計算された勾配が数値的に正しいかをチェックします。テストbackwardPropagationDoesNotErrorは,自動微分を使用して微分を計算できるかをチェックします。

中間層-オプションの関数落后的が指定されていない場合,テストbackwardPropagationDoesNotErrorは自動微分を使用して微分を計算できるかをチェックします。オプションの関数落后的が指定されている場合,テストgradientsAreNumericallyCorrect落后的で計算された勾配が数値的に正しいかをテストします。

テスト診断 説明 考えられる解決策
期望一个没有尺寸标签的dlarray,但却找到了标签 オプションの関数落后的が指定されていない場合,層の順方向関数は次元ラベルなしでdlarrayオブジェクトを出力しなければなりません。 層の順方向関数で作成されたdlarrayオブジェクトに次元ラベルが含まれないことを確認します。
无法在层中反向传播。检查“forward”函数是否完全支持自动区分。金宝app或者,手动实现'backward'函数

次の1以上に該当しています。

  • オプションの関数落后的が指定されていない場合,層の順方向関数がdlarrayオブジェクトをサポ,トしていない。

  • オプションの関数落后的が指定されていない場合,順方向関数の入力dlarrayオブジェクトのトレ,スが破損している。たとえば,関数extractdataを使用した場合です。

順関数がdlarrayオブジェクトをサポ,トしていることを確認します。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

入力dlarrayオブジェクトの微分をトレ,スできることを確認します。dlarrayオブジェクトの微分のトレ,スの詳細は,微分のトレ,スを参照してください。

または,落后的という名前の関数を作成してカスタム逆方向関数を定義します。詳細にいては,逆方向関数を参照してください。

无法在层中反向传播。检查'predict'函数是否完全支持自动区分。金宝app或者,手动实现'backward'函数
“向后”的导数“dLdX”与数值梯度不一致

次の1以上に該当しています。

  • オプションの関数落后的が指定されている場合,微分が正しく計算されていない

  • 順方向関数が一部の入力点で微分可能ではない

  • 許容誤差が小さすぎる

層の順方向関数がdlarrayオブジェクトをサポ,トしている場合,逆方向関数が自動的に決定されるため,逆方向関数を省略できます。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

落后的の微分が正しく計算されていることを確認します。

微分が正しく計算されている場合,框架的诊断セクションで,微分の実際の値と期待される値の間で絶対誤差と相対誤差を手動で確認します。

絶対誤差と相対誤差が許容誤差限界内にある場合,このテスト診断を無視できます。

对于“向后”,损失对输入“in1”的导数与数值梯度不一致
“向后”的损失对“W”的导数与数值梯度不一致

ヒント

層の順方向関数がdlarrayオブジェクトをサポ,トしている場合,逆方向関数が自動的に決定されるため,関数落后的を指定する必要はありません。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

出力層-オプションの関数backwardLossが指定されていない場合,テストbackwardPropagationDoesNotErrorは自動微分を使用して微分を計算できるかをチェックします。オプションの関数backwardLossが指定されている場合,テストgradientsAreNumericallyCorrectbackwardLossで計算された勾配が数値的に正しいかをテストします。

テスト診断 説明 考えられる解決策
期望一个没有尺寸标签的dlarray,但却找到了标签 オプションの関数backwardLossが指定されていない場合,関数forwardLossは次元ラベルなしでdlarrayオブジェクトを出力しなければなりません。 関数forwardLossで作成されたdlarrayオブジェクトに次元ラベルが含まれないことを確認します。
无法在层中反向传播。检查'forwardLoss'函数是否完全支持自动区分。金宝app或者,手动实现'backwardLoss'函数

次の1以上に該当しています。

  • オプションの関数backwardLossが指定されていない場合,層の関数forwardLossdlarrayオブジェクトをサポ,トしていない。

  • オプションの関数backwardLossが指定されていない場合,関数forwardLossの入力dlarrayオブジェクトのトレ,スが破損している。たとえば,関数extractdataを使用した場合です。

関数forwardLossdlarrayオブジェクトをサポ,トしていることを確認します。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

入力dlarrayオブジェクトの微分をトレ,スできることを確認します。dlarrayオブジェクトの微分のトレ,スの詳細は,微分のトレ,スを参照してください。

または,backwardLossという名前の関数を作成してカスタム逆方向損失関数を定義します。詳細にいては,損失関数を参照してください。

'backwardLoss'的导数'dLdY'与数值梯度不一致

次の1以上に該当しています。

  • 予測Yにいての微分が正しく計算されていない

  • 関数が一部の入力点で微分可能ではない

  • 許容誤差が小さすぎる

backwardLossの微分が正しく計算されていることを確認します。

微分が正しく計算されている場合,框架的诊断セクションで,微分の実際の値と期待される値の間で絶対誤差と相対誤差を手動で確認します。

絶対誤差と相対誤差が許容誤差限界内にある場合,このテスト診断を無視できます。

ヒント

関数forwardLossdlarrayオブジェクトをサポ,トしている場合,逆方向損失関数が自動的に決定されるため,関数backwardLossを指定する必要はありません。dlarrayオブジェクトをサポトしている関数の一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。

コ,ド生成の互換性

“CheckCodegenCompatibility”オプションを真正的に設定すると,関数checkLayerは,コ,ド生成の互換性に,いて層をチェックします。

テストcodegenPragmaDefinedInClassDefは,層の定義にコ,ド生成プラグマ% # codegenが含まれていることをチェックします。テストcheckFor金宝appSupportedLayerPropertiesForCodegenは,層のプロパティによってコ,ド生成がサポ,トされていることをチェックします。テストpredictIsValidForCodegenerationは,预测の出力の次元およびバッチサ@ @ズに整合性があることをチェックします。

コド生成では,2次元メジ入力のみで中間層がサポトされます。

テスト診断 説明 考えられる解決策
在自定义层的类定义中指定'%#codegen' 層の定義には,コ,ド生成用のプラグマ“% # codegen”が含まれません。

この層のコ,ドを生成することを示すため,層の定義に% # codegen命令(プラグマ)を追加します。この命令は,MATLABコードアナライザーに対し,コード生成時のエラーの原因となる違反を診断して修正するのに役立つ情報を提供するよう指示します。

对于自定义层,非标量层属性必须为单类型或双类型或字符数组 層には、单配列、双配列,または文字配列以外の型の,非スカラーのプロパティが含まれます。

非スカラーのプロパティを変換して,型が单配列,双配列,または文字配列の表現を使用します。

たとえば,分类配列を,カテゴリを表す型の整数の配列に変換します。

对于自定义层,标量层属性必须是数值、逻辑或字符串 層には,数値,逻辑,または字符串以外の型の,スカラ,のプロパティが含まれます。

スカラーのプロパティを変換して,数値表現,または型が逻辑か字符串の表現を使用します。

たとえば,分类スカラ,を,カテゴリを表す型の整数に変換します。

对于代码生成,“Z”必须具有与层输入相同的维数

预测の出力Zの次元数は,層入力の次元数と一致しません。

関数预测で,層入力と同じ次元数の出力を返します。

对于代码生成,“Z”必须与层输入具有相同的批处理大小

预测の出力Zのバッチサaapl . exeズは,層入力のバッチサaapl . exeズと一致しません。

関数预测で,層入力と同じバッチサ。

参考

|

関連するトピック