特定の畳み込み層や全​結合層に対して、重み​やバイアスを更新させ​ないはありますか?

8 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 28 Nov 2017
AlexNet等の事前学習済モデルを使って、転移学習しようと考えています。
CNNで学習した重みデータを有効に活用するため、 特徴抽出部(Conv/MaxPool/ReLU)の層までの重みデータはそのままに、分類部(FC)の層のみを変更したいと思います。
特徴抽出部の重みを変えずに、FC層のみの再学習をCNNで行う方法はありますか?
 

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 28 Nov 2017
Convolution2DLayer() や FullyConnectedLayer() には、 
WeightLearnRateFactor および BiasLearnRateFactor プロパティがあります。
特定の畳み込み層のみ、重み係数を更新させないようにする場合は、下記のように その層に対して、WeightLearnRateFactor および BiasLearnRateFactor を 0 値に 設定します。
 
net = alexnet;
layersTransfer = net.Layers(1:end-3);
numClasses = numel(categories(merchImagesTrain.Labels));
layers = [...
layersTransfer
fullyConnectedLayer(numClasses,'WeightLearnRateFactor',1,'BiasLearnRateFactor',1)
softmaxLayer
classificationLayer];
layers(2).WeightLearnRateFactor = 0;
layers(2).BiasLearnRateFactor = 0;
layers(6).WeightLearnRateFactor = 0;
layers(6).BiasLearnRateFactor = 0;
layers(10).WeightLearnRateFactor = 0;
layers(10).BiasLearnRateFactor = 0;
layers(12).WeightLearnRateFactor = 0;
layers(12).BiasLearnRateFactor = 0;
layers(14).WeightLearnRateFactor = 0;
layers(14).BiasLearnRateFactor = 0;

More Answers (0)

Tags

No tags entered yet.

Products


Release

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!