现在的话是将VGG特征层全部冻掉,如果我想只冻结前几层,不全部冻结,该怎么做呢?
## 获取vgg16的特征提取层
vgg = vgg16.features
# 将vgg16的特征提取层参数冻结,不对其进行更新
for param in vgg.parameters:
param.requires_grad_(False)
freeze = [1,2,6,8,9] # layers to freeze
for k, v in model.named_parameters():
v.requires_grad = True # train all layers
if k in freeze:
v.requires_grad = False
另外就是利用isinstance函数,冻结特定网络层名
for k, v in model.named_parameters():
if if isinstance(v, Conv)
v.requires_grad = False
if if isinstance(v, layer_10)
v.requires_grad = False