例のためにテンソルの流れで内積を計算することを検討してください。私は、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配列に変換可能でなければなりません。