[英]How can I only train the classifier and freeze rest of the parameters in Pytorch?
我取了 MoviNet 的预训练 model,我改变了最后一层。
这是我采用的预训练 model 的最后一个参数;
classifier.0.conv_1.conv2d.weight : torch.Size([2048, 640, 1, 1])
classifier.0.conv_1.conv2d.bias : torch.Size([2048])
classifier.3.conv_1.conv2d.weight : torch.Size([600, 2048, 1, 1])
classifier.3.conv_1.conv2d.bias : torch.Size([600])
以下是我在最后一层更改的参数;
clfr.0.multi_head.0.head2.0.conv_1.conv2d.weight : torch.Size([2048, 640, 1, 1])
clfr.0.multi_head.0.head2.0.conv_1.conv2d.bias : torch.Size([2048])
clfr.0.multi_head.0.head1.weight : torch.Size([600, 2048, 1, 1])
clfr.0.multi_head.0.head1.bias : torch.Size([600])
我想只训练基于前一层权重的分类器(clfr),并冻结 pytorch 中的所有先前层,谁能告诉我该怎么做?
您可以为不想训练的每一层设置layer.requires_grad=False
。 如果更容易,您可以通过循环遍历整个 model 并将其设置为您想到的特定层将其设置为True
来将所有层设置为False
。 这是为了确保您将所有其他层设置为False
,而不必明确找出它们是哪些层。
创建优化器时,仅传递您要在训练期间更新的参数。 在您的示例中,它可能类似于:
optimizer = torch.optim.Adam(clfr.parameters())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.