2016-06-21 18 views
0

例のためにテンソルの流れで内積を計算することを検討してください。私は、TensorFlowのグラフをフィードを使ってセッションで評価するときに、グラフ内のものを参照するさまざまな方法を実験しようとしていました。次のコードを考えてみましょう:TensorFlowで使用するデータの種類は何ですか?

import numpy as np 
import tensorflow as tf 

M = 4 
D = 2 
D1 = 3 
x = tf.placeholder(tf.float32, shape=[M, D], name='data_x') # M x D 
W = tf.Variable(tf.truncated_normal([D,D1], mean=0.0, stddev=0.1)) # (D x D1) 
b = tf.Variable(tf.constant(0.1, shape=[D1])) # (D1 x 1) 
inner_product = tf.matmul(x,W) + b # M x D1 
with tf.Session() as sess: 
    sess.run(tf.initialize_all_variables()) 
    x_val = np.random.rand(M,D) 
    #print type(x.name) 
    #print x.name 
    name = x.name 
    ans = sess.run(inner_product, feed_dict={name: x_val}) 
    ans = sess.run(inner_product, feed_dict={x.name: x_val}) 
    ans = sess.run(inner_product, feed_dict={x: x_val}) 
    name_str = unicode('data_x', "utf-8") 
    ans = sess.run(inner_product, feed_dict={"data_x": x_val}) #doesn't work 
    ans = sess.run(inner_product, feed_dict={'data_x': x_val}) #doesn't work 
    ans = sess.run(inner_product, feed_dict={name_str: x_val}) #doesn't work 
    print ans 

次の作業:

ans = sess.run(inner_product, feed_dict={name: x_val}) 
ans = sess.run(inner_product, feed_dict={x.name: x_val}) 
ans = sess.run(inner_product, feed_dict={x: x_val}) 

が、最後の3:

name_str = unicode('data_x', "utf-8") 
ans = sess.run(inner_product, feed_dict={"data_x": x_val}) #doesn't work 
ans = sess.run(inner_product, feed_dict={'data_x': x_val}) #doesn't work 
ans = sess.run(inner_product, feed_dict={name_str: x_val}) #doesn't work 

はしないでください。私はなぜ型がx.nameだったのか確認しましたが、Pythonインタプリタ型に変換してもまだ動作しませんでした。私はdocumentationは鍵はテンソルでなければならないと言います。しかし、それはテンソル(そのa <type 'unicode'>)ではない間にx.nameを受け入れ、誰かが何が起こっているか知っていますか?


私は文書を貼り付けることができますが、それはテンソルである必要が言う:

オプションfeed_dict引数は、呼び出し側がグラフにテンソルの 値を上書きすることができます。 feed_dictにおける各キーは 次のいずれかのタイプとすることができる。

キーがテンソルの場合、値はその同じDTYPEに変換することができるPythonのスカラー、文字列、 リスト、またはnumpyのndarrayであってもよいです テンソル。さらに、キーがプレースホルダの場合、 の値の形状は、プレースホルダとの互換性がチェックされます。 キーがSparseTensorの場合、値はSparseTensorValueでなければなりません。 feed_dictの各 の値は、対応するキーのdtype のnumpy配列に変換可能でなければなりません。

答えて

0

TensorFlowは、フィード辞書のキーとしてtf.Tensorオブジェクトを主に想定しています。また、セッションのグラフ内にあるのプロパティー()と等しい場合は、文字列(bytesまたはunicode)を受け入れます。

例では、xtf.Tensorであり、その.nameプロパティを評価しているため、x.nameが機能します。 (つまりx.op)の名​​前で、tf.Tensorの名前ではないためtf.Operationの出力であるため、"data_val"は機能しません。 x.nameを印刷すると、値が"data_val:0"であることがわかります。つまり、tf.Operationの0番目の出力は"data_val"となります。