始める無料で始める

モデルの層を凍結する

事前学習済みの重みを読み込んだあと、新しいタスクに対してモデルをファインチューニングしようとしています。モデルには3つの線形層があります。ただし、データセットが小さいため、このモデルでは最後の線形層だけを学習し、最初の2つの線形層は凍結したいとします。

モデルはすでに作成され、変数modelに入っています。モデルのnamed_parametersメソッドを使って、モデルのパラメータ一覧を取得します。各パラメータには名前が付いており、その名前はx.nameという命名規則の文字列になっています。ここで、xは層のインデックスです。

線形層にはweightbiasの2つのパラメータがあることを思い出してください。

この演習はコースの一部です

PyTorchで学ぶIntroduction to Deep Learning

コースを見る

演習の手順

  • if文を使って、パラメータが第1層または第2層のweightかどうかを判定します。
  • このモデルの最初の2層のweightを凍結してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

for name, param in model.named_parameters():
  
    # Check for first layer's weight
    if name == '____':
   
        # Freeze this weight
        param.____ = ____
        
    # Check for second layer's weight
    if name == '____':
      
        # Freeze this weight
        param.____ = ____
コードを編集して実行