Pytorch中如何使用finetune-创新互联

这篇文章主要介绍Pytorch中如何使用finetune,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联是专业的达孜网站建设公司,达孜接单;提供网站制作、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行达孜网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

finetune分为全局finetune和局部finetune。首先介绍一下局部finetune步骤:

1.固定参数

  for name, child in model.named_children():
    for param in child.parameters():
      param.requires_grad = False

后,只传入 需要反传的参数,否则会报错

filter(lambda param: param.requires_grad, model.parameters())

2.调低学习率,加快衰减

finetune是在预训练模型上进行微调,学习速率不能太大。

目前不清楚:学习速率降低的幅度可以更快一些。这样以来,在使用step的策略时,stepsize可以更小一些。

直接从原始数据训练的base_lr一般为0.01,微调要比0.01小,置为0.001

要比直接训练的小一些,直接训练的stepsize为100000,finetune的stepsize: 50000

3. 固定bn或取消dropout:

batchnorm会影响训练的效果,随着每个batch,追踪样本的均值和方差。对于固定的网络,bn应该使用全局的数值

def freeze_bn(self):
  for layer in self.modules():
    if isinstance(layer, nn.BatchNorm2d):
      layer.eval()

训练时,model.train()会修改模式,freeze_zn()应该在这里后面

4.过滤参数

训练时,对于优化器,应该只传入需要改变的参数,否则会报错

filter(lambda p: p.requires_grad, model.parameters())

以上是“Pytorch中如何使用finetune”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


新闻名称:Pytorch中如何使用finetune-创新互联
标题来源:http://bzwzjz.com/article/cdposd.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 H5网站制作 重庆网站制作 高端网站设计推广 上市集团网站建设 企业手机网站建设 成都网站制作 成都网站制作 高端网站设计 重庆网站设计 公司网站建设 攀枝花网站设计 定制网站建设多少钱 手机网站建设套餐 网站建设推广 重庆企业网站建设 成都网站建设 成都网站制作 定制级高端网站建设 网站建设 成都营销网站制作 高端定制网站设计