2016-05-06 5 views
1

TensorFlow 0.8でmnist_softmax.pyを実行しようとしました。 モデルテストステップの直前にyy_という値を観測したいと思います。以下はテンソルでテンソルの値をプリントする方法mnist_softmax.py

コードです:

print(y) # added by me 
print(y_) # added by me 

# Test trained model 
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1)) 

完成したコードはGitHubで利用可能です。以下は

が出力されます。

Tensor("Softmax:0", shape=(?, 10), dtype=float32) 
Tensor("Placeholder_1:0", shape=(?, 10), dtype=float32) 

私もsess.run(y)、およびy.eval()を使用しようとしましたが、私はそれしようとすると、私はこのようなエラーが出る:

tensorflow.python.framework.errors.InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder' with dtype float 
     [[Node: Placeholder = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]] 
Caused by op u'Placeholder', defined at: ... 
+0

次の記事をチェックしてください:http://stackoverflow.com/questions/33610685/in-tensorflow-what-is-the-difference-between-session-run-and-tensor-eval/33610914#33610914 – PseudoAj

答えて

3

TLを、DR :yy_テンソルはtf.placeholder()の操作に依存するため、フィードとinpuあなたがそれらを評価した時のt値。あなたはそうのような入力のバッチを供給することによって、入力データのバッチにソフトマックスの出力を印刷することができます

batch_xs, _ = mnist.train.next_batch(100) 
print(y.eval({x: batch_xs})) 

MNISTの例は次の行が含まれますことを

# Create the model 
x = tf.placeholder(tf.float32, [None, 784]) 
W = tf.Variable(tf.zeros([784, 10])) 
b = tf.Variable(tf.zeros([10])) 
y = tf.nn.softmax(tf.matmul(x, W) + b) 

注意をyを印刷しようとしている最初のテンソルは、xの関数であり、tf.placeholder()と定義されています。 tf.placeholder() opは、計算にシンボリックargumentを定義する方法です。値自体はありませんが、代わりにxは、784列の浮動小数点値の行列でなければなりません。

xの値を提供することなくyを評価/ランニングは、次のPythonの関数を記述し、そのすべての引数なしでそれを呼び出すようなものです:

def y(x): 
    W = ... 
    b = ... 
    return softmax(matmul(x, W), b) 

# This would fail with an error. 
print(y()) 

どのように引数の値を指定するのですか? y_tf.placeholder()のように定義されて

# Get a batch of input data to feed to the computation. 
batch_xs, _ = mnist.train.next_batch(100) 

print(sess.run(y, feed_dict={x: batch_xs})) 
# or 
print(y.eval({x: batch_xs})) 

テンソル:TensorFlowでは、あなたは送りtraining loopaccuracy calculationのように)プレースホルダの値によってこれを行います。技術的な理由から、値を入力してもプレースホルダを直接評価することはできません。しかし、これは特に有用ではありません!代わりに、あなたが供給していたであろう価値を印刷することができます。

+0

ありがとう、 mrry。私はこの問題によって一日悩まされました。あなたの説明はtensorflow.orgよりはるかに明確です。 – kai

関連する問題