主要内容

。

AlexNetをを用しし転移学习

この例のは,事前学习済みのalexnet畳み込みニューラルネットワークを微调整し,新闻イメージイメージをするするを明します。

Alexnetは,100万枚を超えるイメージ习しており,イメージを1000个のオブジェクト(キーボード,マグカップ,铅笔,多重の动物など)にこのできますにわたるのは囲にわたるの豊富な特价表现を学习ています。このネットワークははとしてイメージを取り,イメージ内のオブジェクトのを各オブジェクトカテゴリのと共にと共にと共に出

転移学习は,深层学习アプリケーションでよくされていますを习习のネットワークをして,新しいタスクの学问。通讯は,転移,ランダムに初初さた重み重みゼロからネットワーク习习させるよりはるか単単単ませませませませませんませんてて,新闻学习。

データの読み込み

新闻イメージを解冻しイメージイメージデータストアとして読み込みます。imageageAtastore.は,フォルダー名に基于てに自动的にラベルを付け,データをimageageAtastore.オブジェクトとして格式します。イメージデータストアを使使すると,メモリに收まらないデータなど大大イメージデータを格式し,畳み込み畳み込みネットワークの学习中间にイメージを単位で效率読み取ることができで效率読み取るますます效率

解压缩('merchdata.zip');imds = imageageatastore('merchdata'......'insertumbfolders',真的,......'labelsource''foldernames');

データデータ学习データセット検证データデータセットにますますイメージの70%を学校に使,30%を検证に使用しし。spliteachlabel.は,图片データストアを2つつ新闻データストアににストアししし。

[IMDStrain,IMDSValidation] = SpliteachLabel(IMDS,0.7,'随机');

このとき,この非常に小さなデータセットは,55个の学习イメージ20个の検证イメージが纳れていますます表示れをを表示表示ますますます。

numtrainimages = numel(imdstrain.labels);idx = randperm(numtrainimages,16);数字为了i = 1:16子图(4,4,i)i = ReadImage(IMDstrain,IDX(I));imshow(i)结尾

事前学习済みのネットワークネットワーク読み込み読み込み

事前学习工具箱™型号事前学习工具箱™型号对于AlexNet网络がインストールされていないないないない场场は,ダウンロード用リンクが表示ます.alexnetは,100万枚を超えるイメージ习习であり,イメージを1000个个カテゴリ(キーボード,マウス,铅笔,多重の动物など)に分享できます。结果结果て,このモデルは広范囲のに対するなな徴表现を习しいます。

net = alexnet;

分析をアーキテクチャを対话的に,ネットワークアーキテクチャを対话详细。

分析(净)

,3。

InputSize = Net.Layers(1).InputSize
InputSize =1×3227 227 3.

最后の层の置き换え

事前学习済みのネットワークの最后の3つの层は,1000个のクラスに対して构成されてます。これらこれら3つのを,新闻分享问题微调整しなけれなりません。の3つの层を除くの层をを抽出ます。

Layerstransfer = Net.Layers(1:End-3);

最后の3つの层を全全层,ソフトマックス,および分类出力层に置き换えるによって,层层新闻分享タスク転移データせます。新しいデータにます新闻全结层层オプションを指定。のサイズが新闻データデータの数号同じようよう设定しますますよう层习习速度を层より速くするには転移层速く举重およびBiaslearnratefactor.の値を大厦します。

numclasses = numel(类别(imdstrain.labels))
numclasses = 5
图层= [TALERSTRANSFER全连接层(NUMCLASS,'wexerlearnratefactor'20,'biaslearnratefactor',20)SoftmaxLayer分类层];

ネットワークの学习

27x 227 x 3ののデータストアあるイメージがは异なりますますは异なり异なりを使。学习イメージに対して実行する追加の拡演算として,学校イメージを縦轴に沿っランダムに反転させる演算や,水平方向および垂直に大大30ピクセルだけランダムに移移ささ演算を指定ますデータ拡张は,ネットワークで过含有がが生物したり,学校イメージイメージ正确なが记忆さたりすること防止するのにますます防止するのに役立ちます。

PIXELRANGE = [-30 30];imageaugmenter = imagedataAugmenter(......'randxreflection',真的,......'randxtranslation',pixelrange,......'randytranslation',pixelrange);Augimdstrain = AugmentedimageGedataStore(Inputsize(1:2),IMDstrain,......'dataaugmentation',imageaugmender);

他のデータ拡张ををずに検证イメージのサイズ自动的に変更するは,加加ののにするは指定ずに拡拡イメージずず拡拡拡データストア使

augimdsvalidation = augmentedimagedataStore(输入(1:2),IMDSValidation);

学习オプションを指定します。転移学习习场合,事前学习済みのネットワークのの层からののをを保持しから転移层転移层転移层ししますますを転移层のの习速度ををげるためためを小さい値に设定しますます。上记の手顺は,全全结层の习率率を大厦し,新しい最后のでのて习を短缩ています。のみ学习がが急速に,他他の层でのの习速度はのししにににははエポックのの习をう必要はありありませにう必要ははありませませうう习习ありませませう完全とは习データセットませの完全な习习セット习ことです。ミニバッチミニバッチのサイズと検证データを指定します中は验证频繁回回の反复ごとごとにネットワーク検证されれが検证され

选项=培训选项('sgdm'......'minibatchsize'10,......'maxepochs',6,......'italllearnrate',1e-4,......'洗牌''每个时代'......'vightationdata',augimdsvalidation,......'验证职业',3,......'verbose',错误的,......'plots''培训 - 进步');

転移层と新闻层でで成されるに习习さます。既定既定は,利用可致なgpuがある合并,Trainnetwork.はGPUをををしし(并行计算工具箱™,および计算能力3.0以上のCUDA®対応ROGPUが必要)。培训选项の名前と値ののペアペア数'executionenvironment'を使使し,実行环境をするするできでき。

nettransfer = trainnetwork(augimdstrain,图层,选项);

検证イメージの分享

微调整したネットワークを使てて検证をををしし。

[ypred,scores] =分类(nettransfer,augimdsvalidation);

4个のサンプル検证イメージ,そのその予测ラベルを表示しし。

idx = randperm(numel(imdsvalidation.files),4);数字为了i = 1:4子图(2,2,i)i = ReadImage(IMDSValidation,IDX(I));imshow(i)标签= ypred(idx(i));标题(字符串(标签));结尾

検证セットに対する分类精密をを计算しし度とは,ネットワークネットワーク予测が正式行为れるラベルのの割。

yvalidation = imdsvalidation.labels;精度=均值(ypred == yvalidation)
精度= 1

分享精确の向上に关键词,深层学习のヒントとコツを参照してください。

参照

[1] Krizhevsky,Alex,Ilya Sutskever和Geoffrey E. Hinton。“具有深度卷积神经网络的想象成分类。”神经信息处理系统的进步。2012年。

[2] BVLC AlexNet模型。https://github.com/bvlc/caffe/tree/master/models/bvlc_alexnet.

参考

|||

关键词トピック