graph - TensorFlow:使用度量操作(例如准确性)恢复图形,得到错误 'Tensor' 对象没有属性 'initializer'

标签 graph tensorflow deep-learning restore tensor

在使用指标操作(例如来自 tf.python.ops.metrics 的准确性)训练图表后,我尝试恢复图表并评估测试集的准确性。然而,在使用 tf.import_meta_graph 恢复图形后,当我尝试使用 tf.local_variables_initializer() 初始化局部变量(这是必要的)时,我得到一个错误,它说“Tensor”对象没有属性“initializer”。

如果我在恢复后打印局部变量,有两个 Tensorflow Tensors 可能会导致问题。 这两个 tensorlow Tensors 源于精度指标:

  <tf.Tensor 'accuracy/total:0' shape=() dtype=float32_ref>
  <tf.Tensor 'accuracy/count:0' shape=() dtype=float32_ref>

有人可以帮我解决这个问题吗?谢谢!

类似代码:

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)

最佳答案

我有一个解决方法,而不是检索准确度集合(在我的例子中,get_collection 返回一个空列表):

  • 检索 logits 和标签占位符。
  • 然后计算准确率。
  • 记住在恢复到 session 后也要初始化本地运行变量: self.running_vars = tf.get_collection(tf.GraphKeys.LOCAL_VARIABLES, scope="your_accuracy_scope_name")

关于graph - TensorFlow:使用度量操作(例如准确性)恢复图形,得到错误 'Tensor' 对象没有属性 'initializer',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43259392/

相关文章:

java - 使用 Java 为迷宫创建 GUI

linux - 如何为 RHEL 6 找到 libstdc++.so.6 : that contain GLIBCXX_3. 4.19?

python - 为什么要使用 tf.train.Server 并行执行多个 tf.Session()?

convolution - 如何计算 GoogLe Net 的参数数量?

python - Keras 中的 "metrics"是什么?

python - HTML 结构转化为网络图

c++ - 有什么方法可以在无向/有向图中快速找到属于循环(后边)的所有边?

algorithm - 对有向图进行 DFS 和 BFS

tensorflow - TensorFlow 仅限于神经网络吗?

neural-network - 了解最大池化层之后的完全连接层的尺寸