冻结模型的部分层
您将加载预训练权重后,在一个新任务上对模型进行微调。该模型包含 3 个线性层。由于数据集较小,您只想训练模型的最后一个线性层,并冻结前两个线性层。
模型已创建并保存在变量 model 中。您将使用模型的 named_parameters 方法来列出模型的参数。每个参数都有一个名称。名称是遵循以下命名约定的字符串:x.name,其中 x 为层的索引。
请记住,线性层有两个参数:weight 和 bias。
本练习是课程的一部分
使用 PyTorch 的深度学习入门
练习说明
- 使用
if语句检查某个参数是否是第 1 或第 2 层的权重。 - 冻结该模型前两层的权重。
交互式实操练习
通过完成这段示例代码来试试这个练习。
for name, param in model.named_parameters():
# Check for first layer's weight
if name == '____':
# Freeze this weight
param.____ = ____
# Check for second layer's weight
if name == '____':
# Freeze this weight
param.____ = ____