特定の畳み込み層や全結合層に対して、重みやバイアスを更新させないはありますか?
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MathWorks Support Team
le 28 Nov 2017
Réponse apportée : MathWorks Support Team
le 28 Nov 2017
AlexNet等の事前学習済モデルを使って、転移学習しようと考えています。
CNNで学習した重みデータを有効に活用するため、 特徴抽出部(Conv/MaxPool/ReLU)の層までの重みデータはそのままに、分類部(FC)の層のみを変更したいと思います。
特徴抽出部の重みを変えずに、FC層のみの再学習をCNNで行う方法はありますか?
Réponse acceptée
MathWorks Support Team
le 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 commentaires
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!