Pytorch下根据layers的name冻结层进行finetune训练

  • Post author:
  • Post category:其他


进行深度学习任务,当数据量较少而使用的网络模型很大时,很容易出现

overfitting

现象。

其中一个避免过拟合的方式就是

finetune



这时候我们不需要对模型的所有参数进行训练,只需要冻结某些层,训练部分层就可以。

本文就冻结层训练做简单介绍和记录。

首先介绍一下

model.named_parameters()

函数,直接上例子:

from ResNeSt.resnest.torch.resnest import resnest101,resnest200,resnest269

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        model = resnest269(pretrained=True)
        model.fc = nn.Linear(2048,102)
        self.resnet = model
        
    def forward(self, img):        
        out = self.resnet(img)
        # print('out is {}'.format(out))
        return out

model = Net().cuda()
for name, param in model.named_parameters():  # 查看可优化的参数有哪些
    if param.requires_grad:
        print(name)

上面是引入

reanest101

模型,注意是

resnest101

而不是

resnet101

,关于resnest的介绍见

【Resnet最强变体】ResNeSt学习笔记 — ResNeSt: Split-Attention Networks

迭代打印出可以优化的layers的name,输出如下:

resnet.conv1.0.weight
resnet.conv1.1.weight
resnet.conv1.1.bias
resnet.conv1.3.weight
resnet.conv1.4.weight
resnet.conv1.4.bias
resnet.conv1.6.weight
resnet.bn1.weight
resnet.bn1.bias
resnet.layer1.0.conv1.weight
resnet.layer1.0.bn1.weight
resnet.layer1.0.bn1.bias
resnet.layer1.0.conv2.conv.weight
resnet.layer1.0.conv2.bn0.weight
resnet.layer1.0.conv2.bn0.bias
resnet.layer1.0.conv2.fc1.weight
resnet.layer1.0.conv2.fc1.bias
resnet.layer1.0.conv2.bn1.weight
resnet.layer1.0.conv2.bn1.bias
resnet.layer1.0.conv2.fc2.weight
resnet.layer1.0.conv2.fc2.bias
resnet.layer1.0.conv3.weight
resnet.layer1.0.bn3.weight
resnet.layer1.0.bn3.bias
resnet.layer1.0.downsample.1.weight
resnet.layer1.0.downsample.2.weight
resnet.layer1.0.downsample.2.bias
resnet.layer1.1.conv1.weight
resnet.layer1.1.bn1.weight
resnet.layer1.1.bn1.bias
resnet.layer1.1.conv2.conv.weight
resnet.layer1.1.conv2.bn0.weight
resnet.layer1.1.conv2.bn0.bias
resnet.layer1.1.conv2.fc1.weight
resnet.layer1.1.conv2.fc1.bias
resnet.layer1.1.conv2.bn1.weight
resnet.layer1.1.conv2.bn1.bias
resnet.layer1.1.conv2.fc2.weight
resnet.layer1.1.conv2.fc2.bias
resnet.layer1.1.conv3.weight
resnet.layer1.1.bn3.weight
resnet.layer1.1.bn3.bias
resnet.layer1.2.conv1.weight
resnet.layer1.2.bn1.weight
resnet.layer1.2.bn1.bias
resnet.layer1.2.conv2.conv.weight
resnet.layer1.2.conv2.bn0.weight
resnet.layer1.2.conv2.bn0.bias
resnet.layer1.2.conv2.fc1.weight
resnet.layer1.2.conv2.fc1.bias
resnet.layer1.2.conv2.bn1.weight
resnet.layer1.2.conv2.bn1.bias
resnet.layer1.2.conv2.fc2.weight
resnet.layer1.2.conv2.fc2.bias
resnet.layer1.2.conv3.weight
resnet.layer1.2.bn3.weight
resnet.layer1.2.bn3.bias
resnet.layer2.0.conv1.weight
resnet.layer2.0.bn1.weight
resnet.layer2.0.bn1.bias
resnet.layer2.0.conv2.conv.weight
resnet.layer2.0.conv2.bn0.weight
resnet.layer2.0.conv2.bn0.bias
resnet.layer2.0.conv2.fc1.weight
resnet.layer2.0.conv2.fc1.bias
resnet.layer2.0.conv2.bn1.weight
resnet.layer2.0.conv2.bn1.bias
resnet.layer2.0.conv2.fc2.weight
resnet.layer2.0.conv2.fc2.bias
resnet.layer2.0.conv3.weight
resnet.layer2.0.bn3.weight
resnet.layer2.0.bn3.bias
resnet.layer2.0.downsample.1.weight
resnet.layer2.0.downsample.2.weight
resnet.layer2.0.downsample.2.bias
resnet.layer2.1.conv1.weight
resnet.layer2.1.bn1.weight
resnet.layer2.1.bn1.bias
resnet.layer2.1.conv2.conv.weight
resnet.layer2.1.conv2.bn0.weight
resnet.layer2.1.conv2.bn0.bias
resnet.layer2.1.conv2.fc1.weight
resnet.layer2.1.conv2.fc1.bias
resnet.layer2.1.conv2.bn1.weight
resnet.layer2.1.conv2.bn1.bias
resnet.layer2.1.conv2.fc2.weight
resnet.layer2.1.conv2.fc2.bias
resnet.layer2.1.conv3.weight
resnet.layer2.1.bn3.weight
resnet.layer2.1.bn3.bias
resnet.layer2.2.conv1.weight
resnet.layer2.2.bn1.weight
resnet.layer2.2.bn1.bias
resnet.layer2.2.conv2.conv.weight
resnet.layer2.2.conv2.bn0.weight
resnet.layer2.2.conv2.bn0.bias
resnet.layer2.2.conv2.fc1.weight
resnet.layer2.2.conv2.fc1.bias
resnet.layer2.2.conv2.bn1.weight
resnet.layer2.2.conv2.bn1.bias
resnet.layer2.2.conv2.fc2.weight
resnet.layer2.2.conv2.fc2.bias
resnet.layer2.2.conv3.weight
resnet.layer2.2.bn3.weight
resnet.layer2.2.bn3.bias
resnet.layer2.3.conv1.weight
resnet.layer2.3.bn1.weight
resnet.layer2.3.bn1.bias
resnet.layer2.3.conv2.conv.weight
resnet.layer2.3.conv2.bn0.weight
resnet.layer2.3.conv2.bn0.bias
resnet.layer2.3.conv2.fc1.weight
resnet.layer2.3.conv2.fc1.bias
resnet.layer2.3.conv2.bn1.weight
resnet.layer2.3.conv2.bn1.bias
resnet.layer2.3.conv2.fc2.weight
resnet.layer2.3.conv2.fc2.bias
resnet.layer2.3.conv3.weight
resnet.layer2.3.bn3.weight
resnet.layer2.3.bn3.bias
resnet.layer3.0.conv1.weight
resnet.layer3.0.bn1.weight
resnet.layer3.0.bn1.bias
resnet.layer3.0.conv2.conv.weight
resnet.layer3.0.conv2.bn0.weight
resnet.layer3.0.conv2.bn0.bias
resnet.layer3.0.conv2.fc1.weight
resnet.layer3.0.conv2.fc1.bias
resnet.layer3.0.conv2.bn1.weight
resnet.layer3.0.conv2.bn1.bias
resnet.layer3.0.conv2.fc2.weight
resnet.layer3.0.conv2.fc2.bias
resnet.layer3.0.conv3.weight
resnet.layer3.0.bn3.weight
resnet.layer3.0.bn3.bias
resnet.layer3.0.downsample.1.weight
resnet.layer3.0.downsample.2.weight
resnet.layer3.0.downsample.2.bias
resnet.layer3.1.conv1.weight
resnet.layer3.1.bn1.weight
resnet.layer3.1.bn1.bias
resnet.layer3.1.conv2.conv.weight
resnet.layer3.1.conv2.bn0.weight
resnet.layer3.1.conv2.bn0.bias
resnet.layer3.1.conv2.fc1.weight
resnet.layer3.1.conv2.fc1.bias
resnet.layer3.1.conv2.bn1.weight
resnet.layer3.1.conv2.bn1.bias
resnet.layer3.1.conv2.fc2.weight
resnet.layer3.1.conv2.fc2.bias
resnet.layer3.1.conv3.weight
resnet.layer3.1.bn3.weight
resnet.layer3.1.bn3.bias
resnet.layer3.2.conv1.weight
resnet.layer3.2.bn1.weight
resnet.layer3.2.bn1.bias
resnet.layer3.2.conv2.conv.weight
resnet.layer3.2.conv2.bn0.weight
resnet.layer3.2.conv2.bn0.bias
resnet.layer3.2.conv2.fc1.weight
resnet.layer3.2.conv2.fc1.bias
resnet.layer3.2.conv2.bn1.weight
resnet.layer3.2.conv2.bn1.bias
resnet.layer3.2.conv2.fc2.weight
resnet.layer3.2.conv2.fc2.bias
resnet.layer3.2.conv3.weight
resnet.layer3.2.bn3.weight
resnet.layer3.2.bn3.bias
resnet.layer3.3.conv1.weight
resnet.layer3.3.bn1.weight
resnet.layer3.3.bn1.bias
resnet.layer3.3.conv2.conv.weight
resnet.layer3.3.conv2.bn0.weight
resnet.layer3.3.conv2.bn0.bias
resnet.layer3.3.conv2.fc1.weight
resnet.layer3.3.conv2.fc1.bias
resnet.layer3.3.conv2.bn1.weight
resnet.layer3.3.conv2.bn1.bias
resnet.layer3.3.conv2.fc2.weight
resnet.layer3.3.conv2.fc2.bias
resnet.layer3.3.conv3.weight
resnet.layer3.3.bn3.weight
resnet.layer3.3.bn3.bias
resnet.layer3.4.conv1.weight
resnet.layer3.4.bn1.weight
resnet.layer3.4.bn1.bias
resnet.layer3.4.conv2.conv.weight
resnet.layer3.4.conv2.bn0.weight
resnet.layer3.4.conv2.bn0.bias
resnet.layer3.4.conv2.fc1.weight
resnet.layer3.4.conv2.fc1.bias
resnet.layer3.4.conv2.bn1.weight
resnet.layer3.4.conv2.bn1.bias
resnet.layer3.4.conv2.fc2.weight
resnet.layer3.4.conv2.fc2.bias
resnet.layer3.4.conv3.weight
resnet.layer3.4.bn3.weight
resnet.layer3.4.bn3.bias
resnet.layer3.5.conv1.weight
resnet.layer3.5.bn1.weight
resnet.layer3.5.bn1.bias
resnet.layer3.5.conv2.conv.weight
resnet.layer3.5.conv2.bn0.weight
resnet.layer3.5.conv2.bn0.bias
resnet.layer3.5.conv2.fc1.weight
resnet.layer3.5.conv2.fc1.bias
resnet.layer3.5.conv2.bn1.weight
resnet.layer3.5.conv2.bn1.bias
resnet.layer3.5.conv2.fc2.weight
resnet.layer3.5.conv2.fc2.bias
resnet.layer3.5.conv3.weight
resnet.layer3.5.bn3.weight
resnet.layer3.5.bn3.bias
resnet.layer3.6.conv1.weight
resnet.layer3.6.bn1.weight
resnet.layer3.6.bn1.bias
resnet.layer3.6.conv2.conv.weight
resnet.layer3.6.conv2.bn0.weight
resnet.layer3.6.conv2.bn0.bias
resnet.layer3.6.conv2.fc1.weight
resnet.layer3.6.conv2.fc1.bias
resnet.layer3.6.conv2.bn1.weight
resnet.layer3.6.conv2.bn1.bias
resnet.layer3.6.conv2.fc2.weight
resnet.layer3.6.conv2.fc2.bias
resnet.layer3.6.conv3.weight
resnet.layer3.6.bn3.weight
resnet.layer3.6.bn3.bias
resnet.layer3.7.conv1.weight
resnet.layer3.7.bn1.weight
resnet.layer3.7.bn1.bias
resnet.layer3.7.conv2.conv.weight
resnet.layer3.7.conv2.bn0.weight
resnet.layer3.7.conv2.bn0.bias
resnet.layer3.7.conv2.fc1.weight
resnet.layer3.7.conv2.fc1.bias
resnet.layer3.7.conv2.bn1.weight
resnet.layer3.7.conv2.bn1.bias
resnet.layer3.7.conv2.fc2.weight
resnet.layer3.7.conv2.fc2.bias
resnet.layer3.7.conv3.weight
resnet.layer3.7.bn3.weight
resnet.layer3.7.bn3.bias
resnet.layer3.8.conv1.weight
resnet.layer3.8.bn1.weight
resnet.layer3.8.bn1.bias
resnet.layer3.8.conv2.conv.weight
resnet.layer3.8.conv2.bn0.weight
resnet.layer3.8.conv2.bn0.bias
resnet.layer3.8.conv2.fc1.weight
resnet.layer3.8.conv2.fc1.bias
resnet.layer3.8.conv2.bn1.weight
resnet.layer3.8.conv2.bn1.bias
resnet.layer3.8.conv2.fc2.weight
resnet.layer3.8.conv2.fc2.bias
resnet.layer3.8.conv3.weight
resnet.layer3.8.bn3.weight
resnet.layer3.8.bn3.bias
resnet.layer3.9.conv1.weight
resnet.layer3.9.bn1.weight
resnet.layer3.9.bn1.bias
resnet.layer3.9.conv2.conv.weight
resnet.layer3.9.conv2.bn0.weight
resnet.layer3.9.conv2.bn0.bias
resnet.layer3.9.conv2.fc1.weight
resnet.layer3.9.conv2.fc1.bias
resnet.layer3.9.conv2.bn1.weight
resnet.layer3.9.conv2.bn1.bias
resnet.layer3.9.conv2.fc2.weight
resnet.layer3.9.conv2.fc2.bias
resnet.layer3.9.conv3.weight
resnet.layer3.9.bn3.weight
resnet.layer3.9.bn3.bias
resnet.layer3.10.conv1.weight
resnet.layer3.10.bn1.weight
resnet.layer3.10.bn1.bias
resnet.layer3.10.conv2.conv.weight
resnet.layer3.10.conv2.bn0.weight
resnet.layer3.10.conv2.bn0.bias
resnet.layer3.10.conv2.fc1.weight
resnet.layer3.10.conv2.fc1.bias
resnet.layer3.10.conv2.bn1.weight
resnet.layer3.10.conv2.bn1.bias
resnet.layer3.10.conv2.fc2.weight
resnet.layer3.10.conv2.fc2.bias
resnet.layer3.10.conv3.weight
resnet.layer3.10.bn3.weight
resnet.layer3.10.bn3.bias
resnet.layer3.11.conv1.weight
resnet.layer3.11.bn1.weight
resnet.layer3.11.bn1.bias
resnet.layer3.11.conv2.conv.weight
resnet.layer3.11.conv2.bn0.weight
resnet.layer3.11.conv2.bn0.bias
resnet.layer3.11.conv2.fc1.weight
resnet.layer3.11.conv2.fc1.bias
resnet.layer3.11.conv2.bn1.weight
resnet.layer3.11.conv2.bn1.bias
resnet.layer3.11.conv2.fc2.weight
resnet.layer3.11.conv2.fc2.bias
resnet.layer3.11.conv3.weight
resnet.layer3.11.bn3.weight
resnet.layer3.11.bn3.bias
resnet.layer3.12.conv1.weight
resnet.layer3.12.bn1.weight
resnet.layer3.12.bn1.bias
resnet.layer3.12.conv2.conv.weight
resnet.layer3.12.conv2.bn0.weight
resnet.layer3.12.conv2.bn0.bias
resnet.layer3.12.conv2.fc1.weight
resnet.layer3.12.conv2.fc1.bias
resnet.layer3.12.conv2.bn1.weight
resnet.layer3.12.conv2.bn1.bias
resnet.layer3.12.conv2.fc2.weight
resnet.layer3.12.conv2.fc2.bias
resnet.layer3.12.conv3.weight
resnet.layer3.12.bn3.weight
resnet.layer3.12.bn3.bias
resnet.layer3.13.conv1.weight
resnet.layer3.13.bn1.weight
resnet.layer3.13.bn1.bias
resnet.layer3.13.conv2.conv.weight
resnet.layer3.13.conv2.bn0.weight
resnet.layer3.13.conv2.bn0.bias
resnet.layer3.13.conv2.fc1.weight
resnet.layer3.13.conv2.fc1.bias
resnet.layer3.13.conv2.bn1.weight
resnet.layer3.13.conv2.bn1.bias
resnet.layer3.13.conv2.fc2.weight
resnet.layer3.13.conv2.fc2.bias
resnet.layer3.13.conv3.weight
resnet.layer3.13.bn3.weight
resnet.layer3.13.bn3.bias
resnet.layer3.14.conv1.weight
resnet.layer3.14.bn1.weight
resnet.layer3.14.bn1.bias
resnet.layer3.14.conv2.conv.weight
resnet.layer3.14.conv2.bn0.weight
resnet.layer3.14.conv2.bn0.bias
resnet.layer3.14.conv2.fc1.weight
resnet.layer3.14.conv2.fc1.bias
resnet.layer3.14.conv2.bn1.weight
resnet.layer3.14.conv2.bn1.bias
resnet.layer3.14.conv2.fc2.weight
resnet.layer3.14.conv2.fc2.bias
resnet.layer3.14.conv3.weight
resnet.layer3.14.bn3.weight
resnet.layer3.14.bn3.bias
resnet.layer3.15.conv1.weight
resnet.layer3.15.bn1.weight
resnet.layer3.15.bn1.bias
resnet.layer3.15.conv2.conv.weight
resnet.layer3.15.conv2.bn0.weight
resnet.layer3.15.conv2.bn0.bias
resnet.layer3.15.conv2.fc1.weight
resnet.layer3.15.conv2.fc1.bias
resnet.layer3.15.conv2.bn1.weight
resnet.layer3.15.conv2.bn1.bias
resnet.layer3.15.conv2.fc2.weight
resnet.layer3.15.conv2.fc2.bias
resnet.layer3.15.conv3.weight
resnet.layer3.15.bn3.weight
resnet.layer3.15.bn3.bias
resnet.layer3.16.conv1.weight
resnet.layer3.16.bn1.weight
resnet.layer3.16.bn1.bias
resnet.layer3.16.conv2.conv.weight
resnet.layer3.16.conv2.bn0.weight
resnet.layer3.16.conv2.bn0.bias
resnet.layer3.16.conv2.fc1.weight
resnet.layer3.16.conv2.fc1.bias
resnet.layer3.16.conv2.bn1.weight
resnet.layer3.16.conv2.bn1.bias
resnet.layer3.16.conv2.fc2.weight
resnet.layer3.16.conv2.fc2.bias
resnet.layer3.16.conv3.weight
resnet.layer3.16.bn3.weight
resnet.layer3.16.bn3.bias
resnet.layer3.17.conv1.weight
resnet.layer3.17.bn1.weight
resnet.layer3.17.bn1.bias
resnet.layer3.17.conv2.conv.weight
resnet.layer3.17.conv2.bn0.weight
resnet.layer3.17.conv2.bn0.bias
resnet.layer3.17.conv2.fc1.weight
resnet.layer3.17.conv2.fc1.bias
resnet.layer3.17.conv2.bn1.weight
resnet.layer3.17.conv2.bn1.bias
resnet.layer3.17.conv2.fc2.weight
resnet.layer3.17.conv2.fc2.bias
resnet.layer3.17.conv3.weight
resnet.layer3.17.bn3.weight
resnet.layer3.17.bn3.bias
resnet.layer3.18.conv1.weight
resnet.layer3.18.bn1.weight
resnet.layer3.18.bn1.bias
resnet.layer3.18.conv2.conv.weight
resnet.layer3.18.conv2.bn0.weight
resnet.layer3.18.conv2.bn0.bias
resnet.layer3.18.conv2.fc1.weight
resnet.layer3.18.conv2.fc1.bias
resnet.layer3.18.conv2.bn1.weight
resnet.layer3.18.conv2.bn1.bias
resnet.layer3.18.conv2.fc2.weight
resnet.layer3.18.conv2.fc2.bias
resnet.layer3.18.conv3.weight
resnet.layer3.18.bn3.weight
resnet.layer3.18.bn3.bias
resnet.layer3.19.conv1.weight
resnet.layer3.19.bn1.weight
resnet.layer3.19.bn1.bias
resnet.layer3.19.conv2.conv.weight
resnet.layer3.19.conv2.bn0.weight
resnet.layer3.19.conv2.bn0.bias
resnet.layer3.19.conv2.fc1.weight
resnet.layer3.19.conv2.fc1.bias
resnet.layer3.19.conv2.bn1.weight
resnet.layer3.19.conv2.bn1.bias
resnet.layer3.19.conv2.fc2.weight
resnet.layer3.19.conv2.fc2.bias
resnet.layer3.19.conv3.weight
resnet.layer3.19.bn3.weight
resnet.layer3.19.bn3.bias
resnet.layer3.20.conv1.weight
resnet.layer3.20.bn1.weight
resnet.layer3.20.bn1.bias
resnet.layer3.20.conv2.conv.weight
resnet.layer3.20.conv2.bn0.weight
resnet.layer3.20.conv2.bn0.bias
resnet.layer3.20.conv2.fc1.weight
resnet.layer3.20.conv2.fc1.bias
resnet.layer3.20.conv2.bn1.weight
resnet.layer3.20.conv2.bn1.bias
resnet.layer3.20.conv2.fc2.weight
resnet.layer3.20.conv2.fc2.bias
resnet.layer3.20.conv3.weight
resnet.layer3.20.bn3.weight
resnet.layer3.20.bn3.bias
resnet.layer3.21.conv1.weight
resnet.layer3.21.bn1.weight
resnet.layer3.21.bn1.bias
resnet.layer3.21.conv2.conv.weight
resnet.layer3.21.conv2.bn0.weight
resnet.layer3.21.conv2.bn0.bias
resnet.layer3.21.conv2.fc1.weight
resnet.layer3.21.conv2.fc1.bias
resnet.layer3.21.conv2.bn1.weight
resnet.layer3.21.conv2.bn1.bias
resnet.layer3.21.conv2.fc2.weight
resnet.layer3.21.conv2.fc2.bias
resnet.layer3.21.conv3.weight
resnet.layer3.21.bn3.weight
resnet.layer3.21.bn3.bias
resnet.layer3.22.conv1.weight
resnet.layer3.22.bn1.weight
resnet.layer3.22.bn1.bias
resnet.layer3.22.conv2.conv.weight
resnet.layer3.22.conv2.bn0.weight
resnet.layer3.22.conv2.bn0.bias
resnet.layer3.22.conv2.fc1.weight
resnet.layer3.22.conv2.fc1.bias
resnet.layer3.22.conv2.bn1.weight
resnet.layer3.22.conv2.bn1.bias
resnet.layer3.22.conv2.fc2.weight
resnet.layer3.22.conv2.fc2.bias
resnet.layer3.22.conv3.weight
resnet.layer3.22.bn3.weight
resnet.layer3.22.bn3.bias
resnet.layer4.0.conv1.weight
resnet.layer4.0.bn1.weight
resnet.layer4.0.bn1.bias
resnet.layer4.0.conv2.conv.weight
resnet.layer4.0.conv2.bn0.weight
resnet.layer4.0.conv2.bn0.bias
resnet.layer4.0.conv2.fc1.weight
resnet.layer4.0.conv2.fc1.bias
resnet.layer4.0.conv2.bn1.weight
resnet.layer4.0.conv2.bn1.bias
resnet.layer4.0.conv2.fc2.weight
resnet.layer4.0.conv2.fc2.bias
resnet.layer4.0.conv3.weight
resnet.layer4.0.bn3.weight
resnet.layer4.0.bn3.bias
resnet.layer4.0.downsample.1.weight
resnet.layer4.0.downsample.2.weight
resnet.layer4.0.downsample.2.bias
resnet.layer4.1.conv1.weight
resnet.layer4.1.bn1.weight
resnet.layer4.1.bn1.bias
resnet.layer4.1.conv2.conv.weight
resnet.layer4.1.conv2.bn0.weight
resnet.layer4.1.conv2.bn0.bias
resnet.layer4.1.conv2.fc1.weight
resnet.layer4.1.conv2.fc1.bias
resnet.layer4.1.conv2.bn1.weight
resnet.layer4.1.conv2.bn1.bias
resnet.layer4.1.conv2.fc2.weight
resnet.layer4.1.conv2.fc2.bias
resnet.layer4.1.conv3.weight
resnet.layer4.1.bn3.weight
resnet.layer4.1.bn3.bias
resnet.layer4.2.conv1.weight
resnet.layer4.2.bn1.weight
resnet.layer4.2.bn1.bias
resnet.layer4.2.conv2.conv.weight
resnet.layer4.2.conv2.bn0.weight
resnet.layer4.2.conv2.bn0.bias
resnet.layer4.2.conv2.fc1.weight
resnet.layer4.2.conv2.fc1.bias
resnet.layer4.2.conv2.bn1.weight
resnet.layer4.2.conv2.bn1.bias
resnet.layer4.2.conv2.fc2.weight
resnet.layer4.2.conv2.fc2.bias
resnet.layer4.2.conv3.weight
resnet.layer4.2.bn3.weight
resnet.layer4.2.bn3.bias
resnet.fc.weight
resnet.fc.bias

但是,如果全部参数都参与训练的话,很容易过拟合,并且,GPU显存也伤不起,毕竟模型是真的大~~~

下面我只对resnest101的layer4层进行训练,冻结了其它层。如下:

model = Net().cuda()
for name, param in model.named_parameters():  # 查看可优化的参数有哪些
    # if param.requires_grad:
    if 'layer4' in name:
        print(name)
        continue
    param.requires_grad = False

model = nn.DataParallel(model).cuda()
criterion = nn.CrossEntropyLoss().cuda()
optimizer = torch.optim.SGD(filter(lambda p:p.requires_grad, model.parameters()) , 0.01)

下面这行代码是定义优化器,并只对过滤出的参数进行梯度更新,学习率设置为0.01。

optimizer = torch.optim.SGD(filter(lambda p:p.requires_grad, model.parameters()) , 0.01)



版权声明:本文为c2250645962原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。