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爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
Python实现网站文件的全备份和差异备份
Nov 30 Python
Python面向对象编程中的类和对象学习教程
Mar 30 Python
python图片验证码生成代码
Jul 02 Python
Pycharm debug调试时带参数过程解析
Feb 03 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
Jun 29 Python
Python如何使用ElementTree解析xml
Oct 12 Python
解决Pytorch半精度浮点型网络训练的问题
May 24 Python
Python基本数据类型之字符串str
Jul 21 Python
python库sklearn常用操作
Aug 23 Python
python中的sys模块和os模块
Mar 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
php5.2时间相差8小时
2007/01/15 PHP
PHP 批量删除 sql语句
2009/06/05 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
js tab 选项卡
2009/04/26 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
js查错流程归纳
2012/05/04 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
django框架使用方法详解
2019/07/18 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
介绍下static、final、abstract区别
2015/01/30 面试题
保护动物倡议书
2014/04/15 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA