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中比较特别的除法运算和幂运算介绍
Apr 05 Python
python分布式环境下的限流器的示例
Oct 26 Python
Python制作词云的方法
Jan 03 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
详解Python3的TFTP文件传输
Jun 26 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
wxPython之wx.DC绘制形状
Nov 19 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
python/Matplotlib绘制复变函数图像教程
Nov 21 Python
Python中使用subprocess库创建附加进程
May 11 Python
Python编写冷笑话生成器
Apr 20 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 安装最快的解决办法
2010/08/01 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
js几个不错的函数 $$()
2006/10/09 Javascript
JS解密入门 最终变量劫持
2008/06/25 Javascript
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
pandas如何处理缺失值
2019/07/31 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
事业单位个人应聘自荐信
2013/09/21 职场文书
工业设计专业自荐书
2014/06/05 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书