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之私有函数和专有方法
Oct 24 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
python中pika模块问题的深入探究
Oct 13 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
selenium处理元素定位点击无效问题
Jun 12 Python
flask应用部署到服务器的方法
Jul 12 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
关于python中readlines函数的参数hint的相关知识总结
Jun 24 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
文件上传的实现
2006/10/09 PHP
一些常用的php简单命令代码集锦
2007/09/24 PHP
PHP常用的小程序代码段
2015/11/14 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
Python读写Redis数据库操作示例
2014/03/18 Python
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
Python简单I/O操作示例
2019/03/18 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
基于python 凸包问题的解决
2020/04/16 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
办公室文秘自我鉴定
2013/09/21 职场文书
银行演讲稿范文
2014/01/03 职场文书
就业协议书怎么填
2014/09/15 职场文书
2014年化验室工作总结
2014/11/21 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
医院感染管理制度
2015/08/05 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android
Python实现双向链表基本操作
2022/05/25 Python
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技