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 GAE、Django导出Excel的方法
Nov 24 Python
Python中的引用和拷贝浅析
Nov 22 Python
Python标准库内置函数complex介绍
Nov 25 Python
在Django框架中编写Contact表单的教程
Jul 17 Python
python抓取并保存html页面时乱码问题的解决方法
Jul 01 Python
python3中bytes和string之间的互相转换
Feb 09 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
Jun 14 Python
Python docx库用法示例分析
Feb 16 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 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
转PHP手册及PHP编程标准
2006/12/17 PHP
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php设置允许大文件上传示例代码
2014/03/10 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
firefox火狐浏览器与与ie兼容的2个问题总结
2010/07/20 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
Javascript原型链的原理详解
2016/01/05 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
python中计算一个列表中连续相同的元素个数方法
2018/06/29 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
如何定义TensorFlow输入节点
2020/01/23 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
最新奶茶店创业计划书
2014/01/25 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
疾病捐款倡议书
2014/05/13 职场文书
家长会标语
2014/06/24 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
小学四年级学生评语
2014/12/26 职场文书
银行自荐信范文
2015/03/25 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
golang json数组拼接的实例
2021/04/28 Golang