假设为了简单起见,我要加载的模型有4层(layer0, layer1, layer2, layer3)。如果我只希望模型的前两层(layer0和layer1)是预训练的,而layer2和layer3的参数是随机初始化的,我应该如何操作呢?
回答:
你可以通过冻结你不想改变的层(预训练的层),并让其他层保持未冻结状态(它们将继续训练)来实现这一点。
model_ft = models.resnet50(pretrained=True)
ct = 0
for child in model_ft.children():
ct += 1
if ct < 7:
for param in child.parameters():
param.requires_grad = False
这将冻结Resnet50模型中总共10层中的前6层。