主要内容

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

カスタム回帰出力層の定義

ヒント

平均二乗誤差損失を含む回帰出力層を作成するには,regressionLayerを使用します。回帰問題に別の損失関数を使用する場合は,この例を指針として使用してカスタム回帰出力層を定義できます。

この例では,平均絶対誤差(MAE)損失を含むカスタム回帰出力層を作成する方法を説明します。

カスタム回帰出力層を定義するために,この例で提供するテンプレートを使用できます。この例では,次のステップで説明を進めます。

  1. 層の命名——MATLAB®で使用できるように層に名前を付けます。

  2. 層のプロパティの宣言——層のプロパティを指定します。

  3. コンストラクター関数の作成(オプション)——層の構築とそのプロパティ初期化の方法を指定します。コンストラクター関数を指定しない場合,プロパティは作成時に''で初期化されます。

  4. 順方向損失関数の作成——予測と学習ターゲットの間の損失を指定します。

  5. 逆方向損失関数の作成(オプション)——予測についての損失の微分を指定します。逆方向損失関数を指定しない場合,順方向損失関数はdlarrayオブジェクトをサポートしなければなりません。

回帰美層は,回帰問題の平均絶対誤差損失を計算します。美損失は2つの連続確率変数間の誤差測定です。予測Yと学習ターゲットTについて,YとTの間の美損失は次で与えられます。

l 1 N n 1 N 1 R 1 R | Y n T n |

ここでNは観測値の数,Rは応答の数です。

回帰回帰力层テンプレート

回帰出力層のテンプレートをMATLABの新しいファイルにコピーします。このテンプレートは,回帰出力層の構造の概要を示しており,層の動作を定義する関数が含まれます。

classdefmyRegressionLayer < nnet.layer.RegressionLayer属性%(可选)图层属性。%图层属性到这里。结束方法函数层= myRegressionLayer ()%(可选)创建myRegressionLayer。%层构造函数在这里。结束函数loss = forwardLoss(layer, Y, T)%返回预测y与培训之间的损失%目标T.%输入:% layer -输出层% Y -网络预测%T  - 培训目标%输出:百分比 -  y和t之间的损失%层前向损失功能到这里。结束函数dLdY = backwardLoss(layer, Y, T)%(可选)反向传播损失的导数%的功能。%输入:% layer -输出层% Y -网络预测%T  - 培训目标%输出:% dLdY -损失对…的导数%预测y%层向后损耗功能在此处进行。结束结束结束

层の名录

まず,層に名前を付けます。クラスファイルの最初の行で,既存の名前myRegressionLayermaeRegressionLayerに置き換えます。

classdefmaeRightionLayer ...结束

次に,コンストラクター関数myRegressionLayer方法セクションの最初の関数)の名前を層と同じ名前に変更します。

方法函数layer = maeRegressionLayer()…结束...结束

层の保存

層のクラスファイルをmaeRegressionLayer.mという名前の新しいファイルに保存します。このファイル名は層の名前に一致しなければなりません。この層を使用するには,このファイルを現在のフォルダーまたはMATLABパス上のフォルダーに保存しなければなりません。

層のプロパティの宣言

層のプロパティを属性セクションで宣言します。

既定では,カスタム出力層には次のプロパティがあります。

  • 的名字- - - - - -層の名前。文字ベクトルまたは字符串スカラーとして指定します。層グラフに層を含めるには,層に空ではない一意の名前を指定しなければなりません。この層が含まれる系列ネットワークに学習させて的名字''に設定すると,学習時に層に名前が自動的に割り当てられます。

  • 描述- 层についての1行のの明。文件ベクトルまたは弦またはスカラー指定指定しします。配列に表示されるときに表示されます。層の説明を指定しない場合,“分类输出”または“回归输出”が表示されます。

  • 类型——層のタイプ。文字ベクトルまたは字符串スカラーとして指定します。类型の値は,层が配列に表示されるときに表示されます。層のタイプを指定しない場合、層のクラス名が表示されます。

カスタム分類層には次のプロパティもあります。

  • - - - - - -出力層のクラス。直言ベクトル,弦配列,文字ベクトルの细胞配列,または“汽车”として指定します。“汽车”の場合,学習時にクラスが自動的に設定されます。str我ng 配列または文字ベクトルの cell 配列strを指定すると,出力層のクラスが分类(str, str)に設定されます。

カスタム回帰層には次のプロパティもあります。

  • ResponseNames- - - - - -応答の名前。文字ベクトルの细胞配列または字符串配列として指定します。学習時に,学習データに従って応答名が自動的に設定されます。既定値は{}です。

層にその他のプロパティがない場合は,属性セクションを省略できます。

この層には追加のプロパティが必要ないため,属性セクションは削除できます。

コンストラクター関数の作成

层层のををます。

作成時に的名字プロパティプロパティ寿期化するに,入力次数的名字を指定します。関数の構文を説明するコメントを関数の上部に追加します。

函数tillay = maeRightionLayer(姓名)%layer = maeRightionLayer(name)创建一个%均值绝对误差回归层,并指定该层%的名字。...结束

層のプロパティの初期化

コメント%层构造函数在这里を,層のプロパティを初期化するコードに置き換えます。

層の描述プロパティを设定して,层に1行の说明を指定します。的名字プロパティを入力引数的名字に設定します。層のタイプとサイズの説明を設定します。

函数tillay = maeRightionLayer(姓名)%layer = maeRightionLayer(name)创建一个%均值绝对误差回归层,并指定该层%的名字。%设置图层名称。层。的名字=的名字;%设置图层描述。层。描述=的平均绝对误差结束

順方向損失関数の作成

ネットワークで行った予測と学習ターゲットの間の美損失を返す,forwardLossという名前の関数を作成します。forwardLossの構文はloss = forwardLoss(layer, Y, T)です。ここここ,Yは前の層の出力であり,Tは学習ターゲットを含んでいます。

回帰问题の场合,Tの次元も問題のタイプによって異なります。

回帰タスク 入力サイズ 観察値の次元
2次元イメージ回帰 1 x 1 x R x N。ここでRは応答の数,Nは観測値の数です。 4
2¼图像到图像回帰 H x w x c xN。ここでh, w,およびcはそれぞれ出力の高さ,幅,およびチャネル数,Nは観測値の数です。 4
3次元イメージ回帰 1 x 1 x 1 x r x n。ここここ,rは応答の数,nは観测値の。 5
3次元image-to-image回帰 h x w x d x c xN。ここでh, w, d,およびcはそれぞれ出力の高さ,幅,深さ,およびチャネル数,Nは観測値の数です。 5
sequence-to-one回帰 R行N列。ここでRは応答の数,Nは観測値の数です。 2
sequence-to-sequence回帰 R x N x S。ここでRは応答の数,Nは観測値の数,年代はシーケンス長です。 2

たとえば,ネットワークで応答が1つのイメージ回帰ネットワークを定義していてミニバッチのサイズが50の場合,Tはサイズ1 x 1 x 1 x50¼4次元です。

Yのサイズは前の層の出力によって異なります。YTとと同じサイズになるようにをを出层ませ前に含めなければませませに含め含めのなりませたとえば含め含めのばませませ层をなけれのばませようををなけれのなりようようをを出ば応答ようんをを出出层ようんをを出ばなりんんをなけれ出出なりんんをを出出んんをを出出応答んんをを出出ばんんをを出出んんんをを出出ばんんを含めなけれ出出んんたとえばたとえば含めなけれのなりませたとえばたとえば含め含めなけれなけれんたとえばたとえばたとえば含めなけれなければたとえばたとえばたとえばたとえば含めなけれなけれなりたとえばたとえばたとえば含め含めなけれたとえばたとえばたとえばたとえば含めなけれなけれたとえばたとえばたとえばたとえば含めなけれなければたとえばたとえばたとえばをなけれなけれたとえばたとえばたとえば含めたとえばYを必ず正しいサイズの4次元配列にするために,出力層の前にサイズがRの全結合層を含めることができます。

回帰美層は,回帰問題の平均絶対誤差損失を計算します。美損失は2つの連続確率変数間の誤差測定です。予測Yと学習ターゲットTについて,YとTの間の美損失は次で与えられます。

l 1 N n 1 N 1 R 1 R | Y n T n |

ここでNは観測値の数,Rは応答の数です。

入力YおよびTは,この方程式のYおよびTにそれぞれ対応しています。出力损失はlに対応し。损失が必ずスカラーになるように,ミニバッチに対する平均損失を出力します。関数の構文を説明するコメントを関数の上部に追加します。

函数loss = forwardLoss(layer, Y, T)% loss = forwardLoss(layer, Y, T)返回MAE loss between%预测Y和训练目标T。%计算美。R =大小(Y, 3);meanAbsoluteError =总和(abs (y - t), 3) / R;在小批量上取平均值。N =大小(Y, 4);损失= (meanAbsoluteError) / N;结束

関数forwardLossdlarrayオブジェクトをサポートする関数のみを使用するため,関数背瓣の定義はオプションです。dlarrayオブジェクトをサポートしている関数の一覧については,dlarrayをサポートする関数の一覧を参照してください。

完成した層

完成した回帰出力層のクラスファイルを表示します。

classdefmaeRightionLayer %示例具有平均绝对误差损失的自定义回归层。方法函数tillay = maeRightionLayer(姓名)%layer = maeRightionLayer(name)创建一个%均值绝对误差回归层,并指定该层%的名字。%设置图层名称。层。的名字=的名字;%设置图层描述。层。描述=的平均绝对误差结束函数loss = forwardLoss(layer, Y, T)% loss = forwardLoss(layer, Y, T)返回MAE loss between%预测Y和训练目标T。%计算美。R =大小(Y, 3);meanAbsoluteError =总和(abs (y - t), 3) / R;在小批量上取平均值。N =大小(Y, 4);损失= (meanAbsoluteError) / N;结束结束结束

GPU互換性

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

多重のMATLAB组み込み关键词gpuArray(并行计算工具箱)およびdlarrayをサポートしています。dlarrayオブジェクトをサポートしている関数の一覧については,dlarrayをサポートする関数の一覧を参照してください。GPUで実行される関数の一覧については,GPUでのMATLAB関数の実行(并行计算工具箱)を参照してください。深层学习にgpuをををには,サポートされているgpuデバイスデバイスもなければばませませんんんれれいるについてについてははは。リリース别のgpuサポート(并行计算工具箱)を参照してください。Matlabでのgpuのの使详细は,MATLABでのGPU計算(并行计算工具箱)を参照してください。

maeRegressionLayerforwardLossで使用するMATLAB関数はすべて,dlarrayオブジェクトオブジェクトをサポートしているため,层层gpu互换です。

出力層の有効性のチェック

カスタム分類出力層maeRegressionLayerについて層の有効性をチェックします。

カスタム平均绝対误差回帰层をしします。この层を作物するは,ファイルmaeRegressionLayer.mを現在のフォルダーに保存します。層のインスタンスを作成します。

层= maeRegressionLayer ('Mae');

checkLayerを使用して層が有効であることをチェックします。層への典型的な入力における1つの観測値のサイズになるように有効な入力サイズを指定します。層には1 x 1 x RNののを入力するがあります.Rははの数,Nはミニバッチ内の観測値の数です。

validInputSize = [1 1 10];validInputSize checkLayer(层,“ObservationDimension”4);
跳过GPU测试。没有找到兼容的GPU设备。跳过代码生成兼容性测试。要检查代码生成层的有效性,请指定“CheckCodegenCompatibility”和“ObservationDimension”选项。运行nnet.checklayer.TestOutputLayerWithoutBackward……完成nnet.checklayer.TestOutputLayerWithoutBackward __________测试摘要:8通过,0失败,0不完整,2跳过。时间:1.3454秒。

�

ネットワークにカスタム回帰出力層を含める

深度学习工具箱では,カスタムカスタム力层をののの层同じようようできますますますます。

この例では,畳み込みニューラルネットワークアーキテクチャを構築し,ネットワークの学習を行い,学習済みネットワークを使用して手書きの数字の回転角度を予測します。このような予測は,光学式文字認識に役立ちます。

例の学習データを読み込みます。

[Xtrain,〜,Ytrain] = DigitTrain4darraydata;

回帰出力層maeRegressionLayerを含む層配列を作成します。

layers = [imageInputLayer([28 28 1])卷积2dlayer (5,20) batchNormalizationLayer relullayer fulllyconnectedlayer (1) maeRegressionLayer('Mae')]
层= 6 x1层与层:数组1”的形象输入28 x28x1图像zerocenter正常化2”卷积20 5 x5旋转步[1]和填充[0 0 0 0]3“批量标准化批量标准化4”ReLU ReLU 5”完全连接1完全连接层6‘美’回归输出平均绝对误差

学习オプションオプション设定し,ネットワークネットワーク学习さます。

选择= trainingOptions ('sgdm');网= trainNetwork (XTrain、YTrain层,选择);
单CPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | RMSE | |率损失  | |========================================================================================| | 1 | 1 |就是| 28.28 | 25.1 | 0.0100 | | 250 | | 00:00:03 | 14.27 | 11.3 | 0.0100 | | 3 | 100 | 00:00:07 | 14.30 | 11.5 | 0.0100 | | 150 | | 00:00:10 | 10.07 | 7.7 | 0.0100 | | 6 | 200 | 00:00:13 | 9.81 | 7.5 | 0.0100 | | 250 | | 00:00:17 | 10.20 | 7.5 | 0.0100 | | 300 | | 00:00:20 | 9.57 | 7.2 | 0.0100 | | 350 | | 00:00:23 | 8.61 | 6.5 | 0.0100 | | 400 | | 00:00:27 | 9.45 | 6.8|0.0100 | | 12 | 450 | 00:00:30 | 8.26 | 6.0 | 0.0100 | | 13 | 500 | 00:00:34 | 9.51 | 6.1 | 0.0100 | | 15 | 550 | 00:00:38 | 10.00 | 7.7 | 0.0100 | | 16 | 600 | 00:00:42 | 8.60 | 6.1 | 0.0100 | | 17 | 650 | 00:00:46 | 7.18 | 5.4 | 0.0100 | | 18 | 700 | 00:00:50 | 8.89 | 6.3 | 0.0100 | | 20 | 750 | 00:00:53 | 7.76 | 5.9 | 0.0100 | | 21 | 800 | 00:00:57 | 8.07 | 6.0 | 0.0100 | | 22 | 850 | 00:01:01 | 7.38 | 5.6 | 0.0100 | | 24 | 900 | 00:01:04 | 7.51 | 5.5 | 0.0100 | | 25 | 950 | 00:01:07 | 6.88 | 4.9 | 0.0100 | | 26 | 1000 | 00:01:11 | 6.83 | 4.7 | 0.0100 | | 27 | 1050 | 00:01:16 | 6.70 | 4.8 | 0.0100 | | 29 | 1100 | 00:01:20 | 6.57 | 4.8 | 0.0100 | | 30 | 1150 | 00:01:23 | 6.87 | 4.9 | 0.0100 | | 30 | 1170 | 00:01:25 | 7.75 | 6.2 | 0.0100 | |========================================================================================|

回転角度の予測値と実際の値との間の予測誤差を計算することによって,ネットワーク性能を評価します。

[XTest ~,欧美]= digitTest4DArrayData;YPred =预测(净,XTest);predictionError = YTest - YPred;

真の角度から許容誤差限界内にある予測の数を計算します。しきい値を10度に設定し,このしきい値の範囲内にある予測の比率を計算します。

用力推= 10;numCorrect = sum(abs(predictionError) < thr);numTestImages =大小(XTest 4);= numCorrect / numTestImages准确性
精度= 0.7524

参考

||

関連するトピック