主要内容

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

回帰用の畳み込みニューラルネットワークの学習

00

畳み込みニューラルネットワーク(CNNまたは事先)は深層学習に不可欠なツールであり,特にイメージデータの解析に適しています。たとえば,CNNを使用してイメージを分類できます。角度や距離などの連続データを予測するために,ネットワークの最後に回帰層を含めることができます。

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

オプションで,imrotate(图像处理工具箱™)をを用してイメージを回転せせ箱线图(统计和机器学习工具箱™)をを用して残差のひげ図を作物

データの読み込み

データセットには,手書きの数字の合成イメージと各イメージに対応する回転角度(度単位)が含まれています。

digitTrain4DArrayDatadigittest4darraydata.を使用して学習イメージと検証イメージを4次元配列として読み込みます。出力YTrainおよびyvalidation.は回転角度(度単位)です。学习データデータセットと検证データセットはそれぞれそれぞれはははそれぞれはいはははいいいいいいいい

[XTrain ~, YTrain] = digitTrain4DArrayData;[XValidation ~, YValidation] = digitTest4DArrayData;

imshowを使用して,ランダムに選ばれた20枚の学習イメージを表示します。

numTrainImages =元素个数(YTrain);figure idx = randperm(numTrainImages,20);为了i = 1:numel(idx)子图(4,5,i)imshow(xtrain(:,:,:,idx(i)))结尾

データ正規化の確認

ニューラルネットワークに学習させるときは,ネットワークのすべての段階でデータが正規化されていることを確認すると,多くの場合役に立ちます。正規化は,勾配降下を使用したネットワークの学習の安定化と高速化に有効です。データが適切にスケーリングされていない場合,学習中に損失がになり,ネットワークパラメーターが発散する可性がありますます。データデータ正式するます。データ规正式するな方法として,データの范囲が[0,1]になるになるに,または平等が0で标准偏差が1になるように,データデータを再スケーリングスケーリングするありありありをををを正式化。

  • 入にに力する前ににで,このこのは,入力イメージは[0,1]にに正式化。

  • 施力。バッチ正规化学をする,畳み込み层と全全层それぞれについてについて正式化ます。

  • 応答正正式化层をしてネットワークの最后で正式化するで予测の正式にれれのがスケールこれらこれらの予测とにスケールこれらこれらののににがこれらのののに异なるこれらこれらののに异なるこれらこれらこれらのの异なる异なるこれら场场の异なる异なるこれら场异なる学习が收束しないことがありますますありありますされないにされいない场は,正文化をて,ネットワーク学习がされるか确认てください。学习の前応答を正式化するする応答をを化するを。ネットワークネットワークの予测を変换し,元元の応答の予测を求めばなりなりませ

応答の分布をプロットしします。応答(度単位の回転角度角度ます,-45と45の间でほぼ様しおり问题ありませんありありん。分别あり,常に正析されいます。

图直方图(YTrain)轴ylabel ('算作')包含(旋转角度的

一般的に,データを厳密に正式化する,この例でませ。YTrainではなく100 * YTrainまたはYTrain + 500.をを予测するためににネットワークに习ささせる场,学校を开始する,损失がにに,ネットワークパラメーターが発散ます。aY + bを予测するネットワークとyを予测するネットワークとが,最后の全全层层重みとバイアスの単纯再しかしか违わても,このような结果もます。

入入不锈钢はやているはデータを形変换(数码を取る)するするでき换や非形変ますこと形変换や非形换(対を取るます)すること形でき换ことこと変换(対ことを换すること形変ます布非ことも形変

ネットワーク層の作成

回帰问题を解くに,ネットワークの层を作用成し,ネットワークの最后に回帰层を含め。

最初の層は,入力データのサイズとタイプを定義します。入力イメージは28 28 x 1です。学習イメージと同じサイズのイメージ入力層を作成します。

ネットワークの中间は,计算と学习の大部が行わ,ネットワークの中间を成すアーキテクチャをします。

最后の层は,出力データのサイズとタイプを定义します。回帰问题を解くには,ネットワークの最后の回帰层の前に全结合层を配置しなければなりません。サイズ1の全结合出力层,およびおよび回帰层作作作作作作者。

配列ですべての層をまとめます。

layers = [imageInputLayer([28 28 1])卷积2dlayer (3,8,“填充”“相同”) batchNormalizationLayer relullayer平均epooling2dlayer (2,'走吧'2) convolution2dLayer(16日“填充”“相同”) batchNormalizationLayer relullayer平均epooling2dlayer (2,'走吧',2)卷积2dlayer(3,32,“填充”“相同”) batchNormalizationLayer relullayer卷积2dlayer (3,32,“填充”“相同”) batchNormalizationLayer reluLayer dropoutLayer(0.2) fullconnectedlayer (1) regressionLayer];

ネットワークの学習

ネットワーク学习オプションを作品成型。学期を30エポック行为ます。初期学习率を0.001に设定し,20エポック后に学习率ますますと検证频度を指定て,学校中间にの精密度监视します。学习データデータでネットワークににさせ,学校中间に一定间隔で検证に対してその精密を计算します。検证データは,ネットワークのの更にはさません。状况プロットをオンにし,コマンドウィンドウの出力をオフにします。

miniBatchSize = 128;validationFrequency =地板(元素个数(YTrain) / miniBatchSize);选择= trainingOptions (“个”......'minibatchsize'miniBatchSize,......'maxepochs'30岁的......“InitialLearnRate”,1e-3,......“LearnRateSchedule”'分段'......“LearnRateDropFactor”,0.1,......'学习ropperiod'20,......“洗牌”“every-epoch”......“ValidationData”{XValidation, YValidation},......“ValidationFrequency”validationFrequency,......'plots''培训 - 进步'......“详细”、假);

trainNetworkをを使しネットワークをを。このこのでは,互换性のあるgpuが利用できる料は,そのgpuが使使れます。trainNetworkではCPUががが使さます。GPUで学习をには,计算能力3.0以上のcuda®対応nvidia®gpuが必要。

网= trainNetwork (XTrain、YTrain层,选择);

层数プロパティに含まれるネットワークアーキテクチャの详细を确认します。

网。层数
ANS = 18×1层阵列,层数:1'ImageInput'图像输入28×28×1图像与“Zerocenter”归一化2'CONC_1'卷积8 3×3×1卷绕卷曲[1 1]并填充'同样'3'Batchnorm_1'批量归一化批量归一化用8个通道4'Relu_1'Relu Relu 5'AvgPool2D_1'平均池2×2平均汇集步进[2 2]和填充[0 0 0 0] 6'CONC_2'卷积16 3×3×8卷绕升序[11]和填充'相同'7'Batchnorm_2'批量归一化批量归一化与16个通道8'Relu_2'Relu Relu 9'AvgPool2D_2'平均池2×2平均汇集步进[2]和填充[0 0 0 0] 10'CROM_3'卷积32 3×3×16卷绕升温[11]和填充'相同的'11'BATCHNOMM_3'批量归一化批量归一批与32个通道12'Relu_3'Relu Relu 13'Conv_4'卷积32 3×3×32卷曲的卷发[1 1]和填充'相同的'14'Batchnorm_4'批量归一化批量标准化,32通道15'Relu_4'Relu RELU 16'丢弃'辍学20%丢失17'FC'完全连接的1完全连接的层18'回归输出输出均值均匀误差响应'响应'

ネットワークのテスト

検证データに対する精密を评価ことによって,ネットワーク性能をテストます。

预测をを使て,検证イメージの回転角度をしします。

ypreedicte =预测(net,xvalidation);

性能の評価

次の計算を行って,モデルの性能を評価します。

  1. 许容误差限于内にある予测の比率

  2. 回転角度の予測値と実際の値の平方根平均二乗誤差(RMSE)



predictionError = YValidation - YPredicted;

真ををます设定ます値をの内にあるのの范囲内にのの比率をしますの比率を计算ますますの比率を计算します予测比率を计算しますの比率ををしますの比率比率を计算しますの比率を计算しますの比率を计算します。

thr = 10;numcorrect = sum(abs(predictionError)
              
精度= 0.9690.

平方根平均二乗誤差(RMSE)を使用して,回転角度の予測値と実際の値の差を測定します。

广场= predictionError。^ 2;rmse =√意味着(广场))
RMSE =.单身的4.6062

予测の可催化

散布図で予測を可視化します。真の値に対する予測値をプロットします。

图分散(Y预期,YValidation,“+”)包含(“预测值”) ylabel (“真正的价值”)举行图([ -  60 60],[-60 60],“r——”

数字の回転補正

图像处理工具箱の関数を使用して,数字をまっすぐにし,まとめて表示できます。imrotate(图像处理工具箱)を使用して,49個の数字標本をそれぞれの予測回転角度に応じて回転させます。

idx = randperm (numValidationImages, 49);为了i = 1:元素个数(idx)图像= XValidation (:,:,:, idx(我));predictedAngle = YPredicted (idx (i));imagesRotated (::,:, i) = imrotate(形象,predictedAngle,'bicubic'“作物”);结尾

元の数字と回転補正後の数字を表示します。剪辑(图像处理工具箱)をを用して,数码を1つのイメージにて表示ます。

figure subplot(1,2,1)蒙太奇(XValidation(:,:,:,idx))'原来的'副图(1,2,2)蒙太奇(图像旋转)标题'纠正'

参考

|

関連するトピック