BETA

Pytorchでよく使うコード

投稿日:2019-09-03
最終更新:2019-09-03

Pytorchでよく使うコードを記載します。
随時更新します。

パラメータの名前と何番目かを確認するときに参考になる
まるまるにっき | pytorch入門・modelパラメーターの基本

kaggleのコードで参考になった例

Freeze model weights

for param in model.parameters():  
    param.requires_grad = False  

更新可能なパラメータ数を確認


def count_parameters(model):  
    '''  
    Count of trainable weights in a model  
    '''  
    return sum(p.numel() for p in model.parameters() if p.requires_grad)  

count_parameters(model)  

names_clidren

for name, child in model.named_children():  
    print(name)  
# 表示される例  
conv1  
bn1  
relu  
maxpool  
layer1  
layer2  
layer3  
layer4  
avgpool  
fc  

特定の層をfreeze

for name, child in model.named_children():  
    if name in ['layer3', 'layer4']:  
        print(name + ' is unfrozen')  
        for param in child.parameters():  
            param.requires_grad = True  
    else:  
        print(name + ' is frozen')  
        for param in child.parameters():  
            param.requires_grad = False  

fc層を変更する例

model.fc =  model.last_linear = nn.Sequential(  
                          nn.BatchNorm1d(num_ftrs, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True),  
                          nn.Dropout(p=0.25),  
                          nn.Linear(in_features=2048, out_features=2048, bias=True),  
                          nn.ReLU(),  
                          nn.BatchNorm1d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True),  
                          nn.Dropout(p=0.5),  
                          nn.Linear(in_features=2048, out_features=5, bias=True),  
                         )  
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@currypurinの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!