tensorflow 恢复指定层与不同层指定不同学习率的方法


Posted in Python onJuly 26, 2018

如下所示:

#tensorflow 中从ckpt文件中恢复指定的层或将指定的层不进行恢复:
#tensorflow 中不同的layer指定不同的学习率
 
with tf.Graph().as_default():
		#存放的是需要恢复的层参数
	 variables_to_restore = []
	 #存放的是需要训练的层参数名,这里是没恢复的需要进行重新训练,实际上恢复了的参数也可以训练
  variables_to_train = []
  for var in slim.get_model_variables():
   excluded = False
   for exclusion in fine_tune_layers:
   #比如fine tune layer中包含logits,bottleneck
    if var.op.name.startswith(exclusion):
     excluded = True
     break
   if not excluded:
    variables_to_restore.append(var)
    #print('var to restore :',var)
   else:
    variables_to_train.append(var)
    #print('var to train: ',var)
 
 
  #这里省略掉一些步骤,进入训练步骤:
  #将variables_to_train,需要训练的参数给optimizer 的compute_gradients函数
  grads = opt.compute_gradients(total_loss, variables_to_train)
  #这个函数将只计算variables_to_train中的梯度
  #然后将梯度进行应用:
  apply_gradient_op = opt.apply_gradients(grads, global_step=global_step)
  #也可以直接调用opt.minimize(total_loss,variables_to_train)
  #minimize只是将compute_gradients与apply_gradients封装成了一个函数,实际上还是调用的这两个函数
  #如果在梯度里面不同的参数需要不同的学习率,那么可以:
 
  capped_grads_and_vars = []#[(MyCapper(gv[0]), gv[1]) for gv in grads_and_vars]
  #update_gradient_vars是需要更新的参数,使用的是全局学习率
  #对于不是update_gradient_vars的参数,将其梯度更新乘以0.0001,使用基本上不动
 	for grad in grads:
 		for update_vars in update_gradient_vars:
 			if grad[1]==update_vars:
 				capped_grads_and_vars.append((grad[0],grad[1]))
 			else:
 				capped_grads_and_vars.append((0.0001*grad[0],grad[1]))
 
 	apply_gradient_op = opt.apply_gradients(capped_grads_and_vars, global_step=global_step)
 
 	#在恢复模型时:
 
  with sess.as_default():
 
   if pretrained_model:
    print('Restoring pretrained model: %s' % pretrained_model)
    init_fn = slim.assign_from_checkpoint_fn(
    pretrained_model,
    variables_to_restore)
    init_fn(sess)
   #这样就将指定的层参数没有恢复

以上这篇tensorflow 恢复指定层与不同层指定不同学习率的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python利用MethodType绑定方法到类示例代码
Aug 27 Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 Python
python使用KNN算法手写体识别
Feb 01 Python
python:pandas合并csv文件的方法(图书数据集成)
Apr 12 Python
pycharm修改界面主题颜色的方法
Jan 17 Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
Python借助with语句实现代码段只执行有限次
Mar 23 Python
kaggle+mnist实现手写字体识别
Jul 26 #Python
解决tensorflow模型参数保存和加载的问题
Jul 26 #Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 #Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 #Python
基于tensorflow加载部分层的方法
Jul 26 #Python
利用python画出折线图
Jul 26 #Python
浅谈flask源码之请求过程
Jul 26 #Python
You might like
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
web性能优化之javascript性能调优
2012/12/28 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
对javascript继承的理解
2016/10/11 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
python中对list去重的多种方法
2014/09/18 Python
python提示No module named images的解决方法
2014/09/29 Python
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
利用python开发app实战的方法
2019/07/09 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
StubHub德国:购买和出售门票
2017/09/06 全球购物
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
机电工程专业应届生求职信
2013/10/03 职场文书
求职简历自我评价范例
2014/03/12 职场文书
2014年个人售房协议书
2014/10/30 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
环保建议书作文300字
2015/09/14 职场文书
2019年大学推荐信
2019/06/24 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers