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实现2014火车票查询代码分享
Jan 10 Python
详解Django通用视图中的函数包装
Jul 21 Python
Python实现图片转字符画的示例
Aug 22 Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 Python
Python将string转换到float的实例方法
Jul 29 Python
python实现的config文件读写功能示例
Sep 24 Python
使用python 对验证码图片进行降噪处理
Dec 18 Python
python实现简易版学生成绩管理系统
Jun 22 Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 Python
基于tensorflow __init__、build 和call的使用小结
Feb 26 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 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预定义变量9大超全局数组用法详解
2016/04/23 PHP
显示、隐藏密码
2006/07/01 Javascript
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
JavaScript Konami Code 实现代码
2009/07/29 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
实例讲解Python爬取网页数据
2018/07/08 Python
python对html过滤处理的方法
2018/10/21 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
Python中的self用法详解
2019/08/06 Python
python交互模式基础知识点学习
2020/06/18 Python
Python分类测试代码实例汇总
2020/07/23 Python
外国语学院毕业生自荐信
2013/10/28 职场文书
英语文学专业学生的自我评价
2013/10/31 职场文书
农贸市场管理制度
2014/01/31 职场文书
机修工工作职责
2014/02/21 职场文书
产假请假条
2014/04/10 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
导游词之广西漓江
2019/11/02 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
Nginx内网单机反向代理的实现
2021/11/07 Servers