方法1:
net :
{
block1 = sequence{}
block2 = …………
}
在train代码中,指定完lossfunction后,
loss_func = nn.Cro……
(事先打印你的net , 得到你想要固定的部分的name , 我这里是一个block有多步操作,所以使用正则)
for name , parameter in model.named_parametes():
if fnmatch(name , "block1*"):
parameter.requires_grad = False
print(name , "has freezed.")
#之所以用正则,是因为我将所有需要固定的卷积放在block1中, 所以name为block1.1.weight , block1.2.…………
此外还有方法二在网络定义使用 with_no_grad参数,此处不再赘述。