Pytorch之finetune使用详解


Posted in Python onJanuary 18, 2020

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使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Windows下为Python安装Matplotlib模块
Nov 06 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
通过python将大量文件按修改时间分类的方法
Oct 17 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
python 获取sqlite3数据库的表名和表字段名的实例
Jul 17 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
Python3如何在Windows和Linux上打包
Feb 25 Python
Python描述符descriptor使用原理解析
Mar 21 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
pytorch 修改预训练model实例
Jan 18 #Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 #Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 #Python
Python实现点云投影到平面显示
Jan 18 #Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 #Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
Jan 18 #Python
Python中实现输入超时及如何通过变量获取变量名
Jan 18 #Python
You might like
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
php对称加密算法示例
2014/05/07 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
基于Node的Axure文件在线预览的实现代码
2019/08/28 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
python client使用http post 到server端的代码
2013/02/10 Python
Python实现基于权重的随机数2种方法
2015/04/28 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
Python实现微信好友的数据分析
2019/12/16 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
python实现测试工具(二)——简单的ui测试工具
2020/10/19 Python
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
会员卡清退活动总结
2014/08/27 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python