微调

https://zh-v2.d2l.ai/chapter_computer-vision/fine-tuning.html

书中翻译错误指正。

Torch版459页,“我们使⽤的热狗数据集来源于⽹络。该数据集包含 1400 张包含热狗的正⾯类图像以及包含其他⻝物的尽可能多的负⾯级图像。两个 课程 的 1000 张图⽚⽤于训练,其余的则⽤于测试。”
应该是 类别 ,我猜英文版可能是class,翻译错了

1 Like

你好!请教一下,demo上采用的resnet18模型是torchvision.models库里的,采用pretrained=True进行。
pretrained_net = torchvision.models.resnet18(pretrained=True)
如果不采用torchvision.models库里的模型,而是从外部提供的模型进行fine tuning,需要怎么操作?谢谢

首先你要构建一个和你所说的外部模型一样结构的模型(你想要载入的那部分要一致,无需载入的部分如最后的输出层倒无所谓),然后加载那个模型预训练的state_dict,要注意的是你构建的模型与预训练的模型各层的命名要一致,否则load_state_dict会报错。load_state_dict中参数设置strict=False,仅加载一致部分(如下代码)

# 构建模型
# Build your model

# 加载预训练的state_dict
pretrained_state_dict = torch.load(pretrained_path)
# 检验参数数量,确保能匹配
matched_state_dict = {k: v for k, v in pretrained_state_dict.items()
                      if model.state_dict()[k].numel() == v.numel()}
# 不严格载入,加载模型中一致的部分
model.load_state_dict(matched_state_dict, strict=False)

# 后续微调
# To be implemented
1 Like

感谢 @brian-zZZ! 已发PR. 欢迎以后contribute到本书!