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中itertools模块用法详解
Sep 25 Python
python实现可以断点续传和并发的ftp程序
Sep 13 Python
Python简单格式化时间的方法【strftime函数】
Sep 18 Python
Django自定义认证方式用法示例
Jun 23 Python
python实现彩色图转换成灰度图
Jan 15 Python
Python3实现计算两个数组的交集算法示例
Apr 03 Python
python实现银行管理系统
Oct 25 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
python zip()函数使用方法解析
Oct 31 Python
python3.8.1+selenium实现登录滑块验证功能
May 22 Python
Python xlwings插入Excel图片的实现方法
Feb 26 Python
Python爬虫实战之爬取携程评论
Jun 02 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生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
php视频拍照上传头像功能实现代码分享
2015/10/08 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
Javascript模板技术
2007/04/27 Javascript
js no-repeat写法 背景不重复
2009/03/18 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
英语硕士生求职简历的自我评价
2013/10/15 职场文书
护士自荐信范文
2015/03/25 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技