事前学習済みネットワークの特定層の重みまで一括して凍結する方法はありますか?
4 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2025 年 8 月 20 日
回答済み: MathWorks Support Team
2025 年 8 月 20 日
imagePretrainedNetwork でロードしたdlnetworkオブジェクトの 特定の層や複数層に対して重みやバイアスを一括して凍結するにはどうすればよいですか?
たとえば、AlexNetのfc6層までのバイアスの値を凍結する方法を教えてください。
採用された回答
MathWorks Support Team
2025 年 8 月 20 日
imagePretrainedNetwork で取得したdlnetworkオブジェクトの学習パラメータに対する学習率の設定は、setLearnRateFactor()メソッドを利用します。このメソッドは個別の層とパラメータごとに指定する必要があるため、複数層に一括で設定したい場合はforループなどを使って繰り返し処理を行います。
例えば、AlexNetのfc6層までのすべてのパラメータの学習率を0に設定するには、以下のようなコードを使用します。
% AlexNet モデルのロード
[net,classNames] = imagePretrainedNetwork('alexnet');
% Learnable Parametes 一覧取得
tbl = net.Learnables;
% fc6層まで LearnRate を 0 に設定
for n = 1:12
net = setLearnRateFactor(net, tbl.Layer(n), tbl.Parameter(n), 0)
end
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で イメージを使用した深層学習 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!