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脚本实现分析dns日志并对受访域名排行
Sep 18 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
python脚本设置系统时间的两种方法
Feb 21 Python
python魔法方法-属性转换和类的表示详解
Jul 22 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
Sep 24 Python
基于Python的ModbusTCP客户端实现详解
Jul 13 Python
Django中reverse反转并且传递参数的方法
Aug 06 Python
Python安装whl文件过程图解
Feb 18 Python
python collections模块的使用
Oct 16 Python
python中使用np.delete()的实例方法
Feb 01 Python
判断Python中的Nonetype类型
May 25 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 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函数解决SQL injection
2006/10/09 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
jQuery参数列表集合
2011/04/06 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
layui table 获取分页 limit的方法
2019/09/20 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
python使用post提交数据到远程url的方法
2015/04/29 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
Python给图像添加噪声具体操作
2019/03/03 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
Python的历史与优缺点整理
2020/05/26 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
九年级物理教学反思
2014/01/29 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android