tensorflow 恢复指定层与不同层指定不同学习率的方法
作者:跬步达千里 发布时间:2023-08-27 23:09:14
标签: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)
#这样就将指定的层参数没有恢复
来源:https://blog.csdn.net/LIYUAN123ZHOUHUI/article/details/69569493
0
投稿
猜你喜欢
- 本文实例讲述了python实现忽略大小写对字符串列表排序的方法,是非常实用的技巧。分享给大家供大家参考。具体分析如下:先来看看如下代码:st
- 先看看Zeplin 的颜色色值显示示例原有处理方式因为我会 Python (仅限于终端输入 python 然后当做计算器算,或者用 hex(
- 本文实例讲述了Python操作列表常用方法。分享给大家供大家参考,具体如下:使用for循环,遍历整个列表依次从列表中取出元素,存放到name
- 在很多企业会使用闲置的 Windows 机器作为临时服务器,有时候我们想远程调用里面的程序或查看日志文件Windows 内置的服务
- 1.if判断1.1 if语句if 表达式:语句1语句2……1.“if&
- 前言最近在爬行 nosec.org 的数据,看了下需要模拟登录拿到cookie后才能访问想抓的数据,重要的是 nosec.org 的登录页面
- 这个教程,我们将展示如何用python创建一个井字游戏。 其中我们将使用函数、数组、if条件语句、while循环语句和错误捕获等
- python读写文件有时候会出现 ‘XXX'编码不能打开XXX什么的,用记事本打开要读取的文件,另存为UTF
- 内容摘要:一堆数据摆面前,数据背后有什么样的事情在发生,这些数据里面暗藏着什么样的用户需求,什么样的商业机会?看懂这些,将为未来产品设计的方
- 先声明一下,这是本人在某个项目中用到的,本人自己写的,如有雷同纯属巧合。同时也欢迎高人指正。这种星级的投票效果很常见,但是目前线上大多都是通
- Python-pip安装失败问题一、问题描述root@ubuntu:/home/chao# apt-get install python-p
- 代码如下:<% Randomize Do While Len(pass)<12 
- 本文介绍基于Python语言,将一个Excel表格文件中的数据导入到Python中,并将其通过字典格式来存储的方法~ &a
- 如下所示:from tkinter import *class Reg (Frame): def __init__(self,m
- 前言分水岭算法是用于分割的经典算法,在提取图像中粘连或重叠的对象时特别有用,例如下图中的硬币。使用传统的图像处理方法,如阈值和轮廓检测,我们
- 更改主题File → Settings → Appearance & Behavior → Appearance → Theme结果
- 一、什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一
- 简单的‘Hello World!'Python命令行假设你已经安装好了Python, 那么在Linux命令行输入:$python将直
- 这篇文章主要介绍了Python list运算操作代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 在crnn训练的时候需要用到lmdb格式的数据集,下面是python生成lmdb个是数据集的代码,注意一定要在linux系统下,否则会读入图