参考链接:
https://blog.youkuaiyun.com/qq_41368074/article/details/107860126
https://blog.youkuaiyun.com/Code_Mart/article/details/88254444
首先,我们知道,深度学习网络中的参数是通过计算梯度,在反向传播进行更新的,从而能得到一个优秀的参数,但是有的时候,我们想固定其中的某些层的参数不参与反向传播。比如说,进行微调时,我们想固定已经加载预训练模型的参数部分,指向更新最后一层的分类器,这时应该怎么做呢。
方法一
首先我们的模型定义为:
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d()
self.conv2 = nn.Conv2d()
self.fc1 = nn.Squential(
nn.Linear(),
nn.Linear(),
ReLU(inplace=True),
)
self.classifier = nn.Linear()
我们通过设置参数param的requires_grad属性为False,来冻结该层参数。我们可以定义如下函数:

本文介绍如何在深度学习模型中冻结特定层的参数,防止这些参数在训练过程中被更新。提供了两种方法实现这一目标,并展示了如何在定义优化器时指定需要更新的参数。
最低0.47元/天 解锁文章

7260

被折叠的 条评论
为什么被折叠?



