tensorflow 恢复部分参数、加载指定参数

原创 2018年04月16日 16:44:18
现实中碰到一个问题,训练好分类模型,比如训练保存了一个10分类的模型,但是实际用的时候呢,可能是做20分类,但是还想继续使用前面保存的模型。那么相当于是只加载前几层的参数,最后一层做一些修改。




一般实验情况下保存的时候,都是用的saver类,


保存


-Python 代码
1
saver = tf.train.Saver()
2
saver.save(sess,"model.ckpt")
加载


-Python 代码
1
saver.restore(sess,"model.ckpt")


前面的描述相当于是保存了所有的参数,然后加载所有的参数。但是目前的情况有所变化了,不能加载所有的参数,最后一层的参数不一样了,需要随机初始化。如何操作呢?


首先对每一层添加name scope,如下:


-Python 代码
1
with name_scope('conv1'):
2
    xxx
3
with name_scope('conv2'):
4
        xxx
5
with name_scope('fc1'):
6
        xxx
7
with name_scope('output'):
8
        xxx


然后根据变量的名字,选择加载哪些变量,




-Python 代码
1
#得到该网络中,所有可以加载的参数
2
variables = tf.contrib.framework.get_variables_to_restore()
3
#删除output层中的参数
4
variables_to_resotre = [v for v in varialbes if v.name.split('/')[0]!='output']
5
#构建这部分参数的saver
6
saver = tf.train.Saver(variables_to_restore)
7
saver.restore(sess,'model.ckpt')


在tensorflow中,有多种方式可以得到变量的信息:


比如


-Python 代码
1
tf.contrib.framework.get_variables_to_restore()
tf.all_variables()
tf.trainable_varialbes()等等,可以多看看API
版权声明: https://blog.csdn.net/b876144622/article/details/79962727

tensorflow加载部分层方法

一般使用saver.restore(sess, modeldir + "model.ckpt") 即可加载已经训练好的网络,可是有时候想值使用部分层的参数,这时候可以选择在加载网络之后重新初始化剩下...
  • jinglingli_SJTU
  • jinglingli_SJTU
  • 2017-04-10 16:02:15
  • 2209

tensorflow 加载部分变量

tensorflow模型保存为saver = tf.train.Saver()函数,saver.save()保存模型,代码如下: import tensorflow as tf v1= tf.Va...
  • u011961856
  • u011961856
  • 2017-08-07 16:01:44
  • 2372

Tensorflow 部分恢复模型

It is often desirable to fine-tune a pre-trained model on an entirely new dataset or even a new task...
  • abc8350712
  • abc8350712
  • 2017-11-03 16:52:12
  • 448

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

#tensorflow 中从ckpt文件中恢复指定的层或将指定的层不进行恢复: #tensorflow 中不同的layer指定不同的学习率 with tf.Graph().as_default():...
  • LIYUAN123ZHOUHUI
  • LIYUAN123ZHOUHUI
  • 2017-04-07 17:13:37
  • 3600

tensorflow从已经训练好的模型中,恢复(指定)权重(构建新变量、网络)并继续训练(finetuning)

之前已经写了一篇《Tensorflow保存模型,恢复模型,使用训练好的模型进行预测和提取中间输出(特征)》,里面主要讲恢复模型然后使用该模型 假如要保存或者恢复指定tensor,并且把保存的graph...
  • ying86615791
  • ying86615791
  • 2017-07-27 18:18:45
  • 6994

tensorflow模型参数保存和加载问题

tensorflow模型参数保存和加载问题终于找到bug原因!记一下;还是不熟悉平台的原因造成的! Q:为什么会出现两个模型对象在同一个文件中一起运行,当直接读取他们分开运行时训练出来的模型会出错,...
  • u014659656
  • u014659656
  • 2016-12-31 12:33:12
  • 12199

tensorflow的基本用法(十)——保存神经网络参数和加载神经网络参数

tensorflow的基本用法(十)——保存神经网络参数和加载神经网络参数
  • Quincuntial
  • Quincuntial
  • 2017-04-20 19:57:47
  • 3218

TensorFlow 训练好模型参数的保存和恢复代码

TensorFlow 训练好模型参数的保存和恢复代码,之前就在想模型不应该每次要个结果都要重新训练一遍吧,应该训练一次就可以一直使用吧。 TensorFlow 提供了 Saver 类,可以进行保...
  • fendouaini
  • fendouaini
  • 2017-07-16 19:38:55
  • 489

tensorflow从与训练网络模型中fine-tune部分网络层参数

方法1: 1,开启tf的训练,有ckpt生成时停止,使用以下语句获得相关层变量的全称: var_names=tf.contrib.framework.list_variables("...
  • fk1174
  • fk1174
  • 2018-03-28 17:31:53
  • 88

迁移学习之--tensorflow选择性加载权重

迁移学习的实现需要网络在其他数据集上做预训练,完成参数调优工作,然后拿预训练好的参数在新的任务上做fine-tune,但是有时候可能只需要预训练的网络的一部分权重,本文主要提供一个方法如何在tf上加载...
  • qq_25737169
  • qq_25737169
  • 2017-09-28 16:25:03
  • 1687
收藏助手
不良信息举报
您举报文章:tensorflow 恢复部分参数、加载指定参数
举报原因:
原因补充:

(最多只允许输入30个字)