主要内容

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

転移学習入門

この例では,転移学習を使用して,事前学習済みの畳み込みニューラルネットワークであるSqueezeNetの再学習を行い,新しい一連のイメージを分類する方法を説明します。この例を試して,matlab®でどれほど簡単に深層学習を始めることができるか確認してください。

転移学習は,深層学習アプリケ,ションでよく使用されています。事前学習済みのネットワ,クを取得して,新しいタスクの学習の開始点として使用できます。通常は,転移学習によってネットワークを微調整する方が,ランダムに初期化された重みでゼロからネットワークに学習させるよりもはるかに簡単で時間がかかりません。少ない数の学習。

デ,タの解凍

ワ,クスペ,スで,MathWorks Merchデ,タセットを解凍します。75年これは個のMathWorksの商品イメージから成る小さなデータセットであり,5つの異なるクラス(“帽”,“立方体”,“打牌”,“螺丝刀”,“火炬”)に属します。

解压缩(“MerchData.zip”);

事前学習済みのネットワ,クの読み込み

ディプネットワクデザナを開きます。

deepNetworkDesigner

事前学習済みネットワ,クの一覧から(SqueezeNet)を選択し,[開く]をクリックします。

ディプネットワクデザナにネットワク全体が縮小表示されます。

ネットワ,クのプロットを確認します。マウスでズムンするには,Ctrlキを押しながらスクロルホルを使用します。移動するには,方向キを使用するか,スクロルホルを押したままでマウスをドラッグします。プロパティを表示する層を選択します。すべての層の選択を解除すると,[プロパティ]ペ▪▪ンにネットワ▪▪クの概要が表示されます。

デタのンポト

ディプネットワクデザナにデタを読み込むには,[デ,タ]タブで,[デ、タの、ンポ、ト][@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @]をクリックします。[イメージデータのインポート]ダイアログボックスが開きます。

[デ,タソ,ス]リストの[フォルダ]を選択します。[参照]をクリックし,解凍したMerchDataフォルダ,を選択します。

デタを70%の学習デタと30%の検証デタに分割します。

学習▪▪メ▪▪ジに対して実行する拡張演算を指定します。データ拡張は,ネットワークで過適合が発生したり,学習イメージの正確な詳細が記憶されたりすることを防止するのに役立ちます。この例では,X 軸方向のランダムな反転、[-90,90] 度の範囲のランダムな回転、[1,2] の範囲のランダムな再スケーリングを実行します。

[huawei @ huawei @ huawei @ huawei @ huawei @ huawei]をクリックして,ディプネットワクデザナにデタをンポトします。

転移学習用のネットワ,クの編集

新しいイメージを分類するようにSqueezeNetに再学習させるには,ネットワークの最後の2次元畳み込み層と最終分類層を置き換えます。SqueezeNetでは,これらの層の名前はそれぞれ“conv10”“ClassificationLayer_predictions”です。

[デザaapl . aapl . cn]ペesc escンで,新しいconvolution2dLayerをキャンバスにドラッグします。元の畳み込み層と一致させるために,FilterSize1, - 1に設定します。NumFiltersを編集して新しいデ,タのクラス数(この例では5)にします。

WeightLearnRateFactorおよびBiasLearnRateFactor10に設定して学習率を変更し,新しい層での学習速度を転移層より速くします。

最後の2次元畳み込み層を削除して,代わりに新しい層を結合します。

出力層を置き換えます。[層のラ电子邮箱ブラリ]の最後までスクロ,ルして,新しいclassificationLayerをキャンバスにドラッグします。元の出力層を削除して,その位置に新しい層を結合します。

ネットワ,クの学習

学習オプションを選択するには,[学習]タブを選択し,[学習オプション]をクリックします。初期学習率を小さい値に設定して,転移層での学習速度を下げます。上記の手順では2次元畳み込み層の学習率係数を大きくして,新しい最後の層での学習時間を短縮しています。この学習率設定の組み合わせによって,新しい層でのみ学習が急速に進み,他の層での学習速度は低下します。

この例では,InitialLearnRate0.0001に,ValidationFrequency5に,MaxEpochs8に設定します。観測値が55個あるため,MiniBatchSize11に設定して学習デ,タを均等に分け,それぞれのエポックで必ず学習セット全体が使用されるようにします。

指定した学習オプションでネットワ,クを学習させるには,[閉じる]をクリックしてから[学習]をクリックします。

ディプネットワクデザナでは,学習の進行状況の可視化と監視が行えます。必要に応じて,学習オプションを編集してネットワ,クを再学習させることができます。

結果のエクスポトとmatlabコドの生成

学習結果をエクスポ,トするには,[学習]タブで[エクスポ,ト][学習済みネットワ,クと結果のエクスポ,ト]を選択します。ディプネットワクデザナによって,学習済みネットワクが変数trainedNetwork_1に,学習情報が変数trainInfoStruct_1にエクスポ,トされます。

使用するネットワクと学習オプションを再作成するmatlabコドを生成することもできます。[学習]タブの[エクスポ,ト][学習用コ,ドの生成]を選択します。MATLABコードを確認して、学習用のデータの準備、ネットワーク アーキテクチャの作成、およびネットワークの学習をプログラムによって行う方法を学びます。

新しい▪▪メ▪▪ジの分類

学習済みネットワクを使用して分類する新しいメジを読み込みます。

I = imread(“MerchDataTest.jpg”);

ネットワクの入力サズに合うようにテストメジをサズ変更します。

I = imresize(I, [227 227]);

学習済みネットワクを使用してテストメジを分類します。

[YPred,probs] = category (trainedNetwork_1,I);imshow(I) label = YPred;标题(string(标签)+”、“+ num2str(100*max(probs),3) +“%”);

参照

[1] ImageNet。http://www.image-net.org

Iandola, Forrest N,宋汉,Matthew W. Moskewicz, Khalid Ashraf, William J. Dally和Kurt Keutzer。“SqueezeNet: alexnet级精度,参数减少50倍,模型大小<0.5 MB。”预印本,2016年11月4日提交。https://arxiv.org/abs/1602.07360。

[3]伊安多拉,福雷斯特N“SqueezeNet。”https://github.com/forresti/SqueezeNet。

参考

|||

関連するトピック