【问题标题】:Cannot restore variables from saved variables, TensorFlow 1.0, python 3.5.1无法从保存的变量中恢复变量,TensorFlow 1.0,python 3.5.1
【发布时间】:2017-03-30 03:42:30
【问题描述】:

我是 tensorflow 新手,当我尝试从保存的变量中恢复保存的参数时,我得到 "NotFoundError: Key b_1 not found in checkpoint" 完整代码如下。感谢您的帮助!

import tensorflow as tf
import numpy as np
## save to a file
## need to use the same shape and dtype when restore
W = tf.Variable([[1,2,3],[3,4,5]], dtype=tf.float32, name='W')
b = tf.Variable([[1,2,3]],dtype=tf.float32, name='b') 


# initialization
init = tf.global_variables_initializer()
saver = tf.train.Saver()

with tf.Session() as sess:
    sess.run(init)
    saver.save(sess, 'C:\Temp\TensorFlow\save\save.ckpt')

以下是还原部分: ## 恢复变量

W = tf.Variable(np.arange(6).reshape((2,3)), dtype=tf.float32, name='W')
b = tf.Variable(np.arange(3).reshape((1,3)), dtype=tf.float32, name='b')    


saver = tf.train.Saver()
with tf.Session() as sess:
    saver.restore(sess, 'C:\Temp\TensorFlow\save\save.ckpt')
    print('weights', sess.run(W))
    print('biases', sess.run(b))

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    tf.train.Saver 的默认行为是使用 name 属性作为键来保存(或恢复)tf.all_variables() 中的每个变量(除了任何其他“可保存对象”)。

    我怀疑如果你在程序的恢复部分打印出W.nameb.name,你会得到"W_1""b_1"。为什么在指定name='W'name='b' 时会得到这些名称?当前 TensorFlow 图中一定已经存在具有这些名称的变量,因此 TensorFlow 假定您有意创建新变量,并附加一个后缀("_1""_2" 等)以使名称唯一。例如,如果您在同一脚本(或 Jupyter 笔记本)中一个接一个地运行问题中的两个代码片段,您会看到此问题。

    有几种方法可以避免这个问题:

    1. 一种简单但粗略的方法是在程序的恢复部分之前调用tf.reset_default_graph()。这会将当前图表重置为空,因此变量最终将具有您想要的名称 "W""b"

    2. 您可以通过将还原部分包装在 with tf.Graph().as_default(): 块中来实现类似的效果,这可确保在空图中创建变量。

    3. 您可以通过将var_list 参数传递给tf.train.Saver 构造函数来覆盖检查点中的变量和tf.Variable 对象之间的映射,如下所示:

      saver = tf.train.Saver(var_list={"W": W, "b", b})
      

    【讨论】:

    • 我尝试了您提到的这些步骤,但没有奏效。还是同样的错误。我的代码在你身边运行了吗?谢谢!
    • 是的:here's a gist 对我有用(针对 Linux 进行了修改,因此您必须更改路径,仅此而已)。 [编辑:我也刚刚注意到变量键中的“:0”不正确,并更新了答案以反映这一点。这可能会解决你的问题....]
    猜你喜欢
    • 2016-04-16
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2016-06-14
    相关资源
    最近更新 更多