2017-08-16 4 views
0

tensorlfow.metrics.recalltensorlfow.metrics.precisionを使用しようとしていますが、テンソルが上がりますFailedPreconditionErrorです。tensorlfow.metrics.recallを使用しているときにFailedPreconditionError

import numpy as np 
import tensorflow as tf 

y_true = np.array([[1, 1, 0], [0, 1, 1], [0, 0, 1]]) 
y_pred = np.array([[1, 0, 0], [1, 0, 1], [0, 0, 1]]) 

predictions = tf.placeholder(tf.int64, shape=[3, 3]) 
labels = tf.placeholder(tf.int64, shape=[3, 3]) 
prec = tf.metrics.precision(labels, predictions) 
rec = tf.metrics.recall(labels, predictions) 
with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer()) 
    p, r = sess.run([prec, rec], feed_dict={predictions: y_pred, labels: y_true}) 
    print("precision: {}, recall: {}".format(p, r)) 
  • tensorflowバージョン:1.2.1
  • Pythonのバージョン:3.5.2

答えて

1

tf.metrics.precisiontf.metrics.recall内部で作成I sess.run(tf.global_variables_initializer())

を使用しているコードの下にあることに注意してくださいlocal variablecollections=[tf.GraphKeys.LOCAL_VARIABLES]で作成された変数)。だからあなたは:sess.run(tf.local_variables_initializer())同様にする必要があります。

+0

それは、ありがとうございます。 btw、**すべての**変数(ローカル変数とグローバル変数)を初期化する関数を作成するだけではどうですか?グローバル変数とローカル変数を分離するための設計上の懸念は何ですか? – xiaohan2012

+0

このような関数 'tf.initialize_all_variables'が見つかりました。 – xiaohan2012

+1

'tf.initialize_all_variables'は推奨されていません。あなたは上記のものを使うべきです。 –

関連する問題