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闭包实现计数器的方法
May 05 Python
Python入门之三角函数sin()函数实例详解
Nov 08 Python
python实现机械分词之逆向最大匹配算法代码示例
Dec 13 Python
python实现监控某个服务 服务崩溃即发送邮件报告
Jun 21 Python
python直接获取API传递回来的参数方法
Dec 17 Python
python读取txt文件,去掉空格计算每行长度的方法
Dec 20 Python
Python中类的创建和实例化操作示例
Feb 27 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 Python
pytorch 如何使用batch训练lstm网络
May 28 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
最常用的8款PHP调试工具
2014/07/06 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
javascript数组详解
2014/10/22 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
Django密码存储策略分析
2020/01/09 Python
市场部规章制度
2014/01/24 职场文书
学雷锋月活动总结
2014/04/25 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers