133、TensorFlow加载模型(二)

本文详细介绍了在TensorFlow中如何使用tf.train.Saver()来保存和恢复模型中的特定变量,包括如何指定变量名和使用字典来映射变量名,以及如何在不同规模的模型间重用已训练的权重。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 选择哪个变量来保存和恢复
# 如果你没有传递任何的参数到tf.train.Saver()
# 这个saver会处理计算图中所有的变量
# 每一个变量都被保存,保存的名字就是当初创建他们时候的名字
# 有时候在checkpoint文件中声明名字也是很有用的
# 例如 你或许已经训练完一个模型,其中还有变量叫做weights
# 他的值你想存进文件中叫做params
# 有时候只保存和恢复模型子图中的变量也是有用的
# 例如你或许想训练一个有5个隐藏层的神经网络,
# 但是现在你想训练一个有6个隐藏层的神经网络,并且想重用前五层的网络
# 你可以使用saver类来保存和重用前五层的权重
# 你可以很容易地来指定保存和恢复变量的名字,通过tf.train.Saver()构造方法,通过使用下面两个中的一个
# 1、一系列的变量(保存时会使用他们本身的名字)
# 2、一个Python字典,keys是使用时候的名字,值是保存时候的名字
# 持续保存和恢复
import tensorflow as tf
tf.reset_default_graph()
# 创建一些变量
v1 = tf.get_variable("v1", [3], initializer=tf.zeros_initializer)
v2 = tf.get_variable("v2", [5], initializer=tf.zeros_initializer)

# Add ops to save and restore only 'v2' using the name "v2"
saver = tf.train.Saver({"v2":v2})

# Use the saver object normally after that
with tf.Session() as sess:
    # 初始化v1 , 因为the saver 不会初始化v1
    v1.initializer.run()
    saver.restore(sess, "tmp/model.ckpt")
    
    print("v1:%s" % v1.eval())
    # 这里的v2会使用从模型文件中加载的v2
    print("v2:%s" % v2.eval())

下面是输出的结果:

2018-02-17 11:24:11.015461: I C:\tf_jenkins\workspace\rel-win\M\windows\PY\35\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
v1:[ 0.  0.  0.]
v2:[-1. -1. -1. -1. -1.]

 

转载于:https://www.cnblogs.com/weizhen/p/8451512.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值