tensorflow 恢复指定层与不同层指定不同学习率的方法

 更新时间:2018年07月26日 10:34:02   作者:跬步达千里  
今天小编就为大家分享一篇tensorflow 恢复指定层与不同层指定不同学习率的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如下所示:

#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中绕过反爬虫的方法总结

    在本篇文章里小编给大家整理的是一篇关于python中绕过反爬虫的方法总结内容,需要的朋友们可以参考下。
    2020-11-11
  • python中scipy.stats产生随机数实例讲解

    python中scipy.stats产生随机数实例讲解

    在本篇文章里小编给大家分享的是一篇关于python中scipy.stats产生随机数实例讲解内容,有需要的朋友们可以学习下。
    2021-02-02
  • 如何使用Flask-Migrate拓展数据库表结构

    如何使用Flask-Migrate拓展数据库表结构

    这篇文章主要介绍了如何使用Flask-Migrate拓展数据库表结构,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python日志处理模块logging用法解析

    Python日志处理模块logging用法解析

    这篇文章主要介绍了Python日志处理模块logging用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • pybaobabdt库基于python的决策树随机森林可视化工具使用

    pybaobabdt库基于python的决策树随机森林可视化工具使用

    这篇文章主要为大家介绍了pybaobabdt库基于python的决策树随机森林可视化工具使用探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • Python字符串字母大小写转换的各种情况详析

    Python字符串字母大小写转换的各种情况详析

    在使用python语言开发中经常会碰到,需要大写转小写,小写转换大写,甚至字符串中的单词首字母大写,以及字符串手字字母大写的问题,下面这篇文章主要给大家介绍了关于Python字符串字母大小写转换的相关资料,需要的朋友可以参考下
    2022-05-05
  • Pytorch中torch.repeat_interleave()函数使用及说明

    Pytorch中torch.repeat_interleave()函数使用及说明

    这篇文章主要介绍了Pytorch中torch.repeat_interleave()函数使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Python使用Matplotlib进行图案填充和边缘颜色分离的三种方法

    Python使用Matplotlib进行图案填充和边缘颜色分离的三种方法

    Matplotlib是Python中功能强大的绘图库,允许广泛的自定义选项,一个常见的要求是分离出图中的图案填充和边缘颜色,默认情况下,Matplotlib中的填充颜色与边缘颜色相关联,但有一些方法可以独立自定义这些颜色,本文将深入研究如何实现这一点的技术细节,并提供分步说明和示例
    2025-01-01
  • python使用jpype导入多个Jar的异常问题及解决

    python使用jpype导入多个Jar的异常问题及解决

    这篇文章主要介绍了python使用jpype导入多个Jar的异常问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Python高级架构模式知识点总结

    Python高级架构模式知识点总结

    在本篇文章里小编给大家整理了一篇关于Python高级架构模式知识点总结内容,有兴趣的朋友们可以学习参考下。
    2021-08-08

最新评论