Graph TensorFlow:使用度量值op(例如精度)恢复图形,得到错误';张量';对象没有属性';初始化器';
在使用metrics ops(例如tf.python.ops.metrics中的准确性)训练一个图之后,我尝试恢复该图并在测试集上评估准确性。但是,在使用tf.import\u meta\u graph还原图形之后,当我尝试使用tf.local\u variables\u initializer()初始化局部变量(这是必要的)时,我遇到了一个错误,它说“Tensor”对象没有属性“initializer” 如果我在恢复后打印局部变量,有两个Tensorflow张量可能会导致问题。 这两个张量低张量源自精度度量:Graph TensorFlow:使用度量值op(例如精度)恢复图形,得到错误';张量';对象没有属性';初始化器';,graph,tensorflow,deep-learning,restore,tensor,Graph,Tensorflow,Deep Learning,Restore,Tensor,在使用metrics ops(例如tf.python.ops.metrics中的准确性)训练一个图之后,我尝试恢复该图并在测试集上评估准确性。但是,在使用tf.import\u meta\u graph还原图形之后,当我尝试使用tf.local\u variables\u initializer()初始化局部变量(这是必要的)时,我遇到了一个错误,它说“Tensor”对象没有属性“initializer” 如果我在恢复后打印局部变量,有两个Tensorflow张量可能会导致问题。 这两个张量低张
<tf.Tensor 'accuracy/total:0' shape=() dtype=float32_ref>
<tf.Tensor 'accuracy/count:0' shape=() dtype=float32_ref>
我有一个解决方法,而不是检索准确性集合(在我的情况下,
get\u集合
返回了一个空列表):
- 检索登录和标签占位符李>
- 然后计算精度李>
- 还请记住在还原到会话后初始化本地运行变量:
self.running\u vars=tf.get\u集合(tf.GraphKeys.LOCAL\u变量,scope=“your\u accurity\u scope\u name”)
def train():
l_ini = np.array([1, 0, 1, 0, 1, 0], dtype=np.float32)
p_ini = np.array([1, 0, 1, 0, 1, 1], dtype=np.float32)
l = tf.Variable(l_ini, trainable=False)
p = tf.Variable(p_ini, trainable=False)
accuracy = metrics.accuracy(labels=l, predictions=p)
tf.add_to_collection("accuracy", accuracy)
graph = tf.get_default_graph()
sess = tf.Session(graph=graph)
sess.run(tf.global_variables_initializer())
sess.run(tf.local_variables_initializer())
acc = sess.run(accuracy)
saver = tf.train.Saver()
saver.save(sess, 'test.ckpt')
def restore():
with tf.Session() as sess:
loader = tf.train.import_meta_graph('./test.ckpt.meta')
loader.restore(sess, './test.ckpt')
accuracy = tf.get_collection("accuracy")
sess.run(tf.global_variables_initializer())
sess.run(tf.local_variables_initializer())
acc = sess.run(accuracy)