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编程语言的35个与众不同之处(语言特征和使用技巧)
Jul 07 Python
Python实现微信公众平台自定义菜单实例
Mar 20 Python
python判断给定的字符串是否是有效日期的方法
May 13 Python
Python素数检测实例分析
Jun 15 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
Aug 12 Python
Python使用字典实现的简单记事本功能示例
Aug 15 Python
Python 脚本的三种执行方式小结
Dec 21 Python
python scrapy重复执行实现代码详解
Dec 28 Python
Python小白学习爬虫常用请求报头
Jun 03 Python
Python 分布式缓存之Reids数据类型操作详解
Jun 24 Python
Pandas的数据过滤实现
Jan 15 Python
anaconda python3.8安装后降级
Jun 11 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
function.inc.php超越php
2006/12/09 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
js实现返回顶部效果
2017/03/10 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
前端Electron新手入门教程详解
2019/06/21 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
动态设置django的model field的默认值操作步骤
2020/03/30 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
自我评价200字分享
2013/12/17 职场文书
学校万圣节活动方案
2014/02/13 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
环保公益策划方案
2014/08/15 职场文书
九一八事变纪念日演讲稿
2014/09/14 职场文书
休假证明书
2015/06/24 职场文书
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android