特定の畳み込み層や全結合層に対して、重みやバイアスを更新させないはありますか?
8 views (last 30 days)
Show older comments
MathWorks Support Team
on 28 Nov 2017
Answered: MathWorks Support Team
on 28 Nov 2017
AlexNet等の事前学習済モデルを使って、転移学習しようと考えています。
CNNで学習した重みデータを有効に活用するため、 特徴抽出部(Conv/MaxPool/ReLU)の層までの重みデータはそのままに、分類部(FC)の層のみを変更したいと思います。
特徴抽出部の重みを変えずに、FC層のみの再学習をCNNで行う方法はありますか?
Accepted Answer
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;
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!