TensorFlowで簡単なおもちゃの例を作成しようとしていますが、奇妙なエラーに遭遇しました。次のように定義された2つのプレースホルダーがあります。
x = tf.placeholder(tf.float32, shape=[None,2]) [two-parameter input]
y_ = tf.placeholder(tf.float32, shape=[None,2]) [one-hot labels]
後でこれらのプレースホルダーに、次のように定義されたfeed_dictをフィードしようとします。
feed_dict={x: batch[0].astype(np.float32), y_: batch[1].astype(np.float32)}
どこ batch[0]
およびbatch[1]
両方とも、サイズ(100,2)のnumpy ndarrayです(それぞれのサイズを出力することにより検証されます)
モデルを実行しようとすると、次のエラーが表示されます。
「InvalidArgumentError:プレースホルダーテンソル 'Placeholder'の値にdtype floatを指定する必要があります」
上記で定義したプレースホルダー「x」が原因
誰が私が間違っているのか教えてもらえますか?私はオンラインでいくつかの例を調べましたが、これはうまくいくはずです... numpy配列の値をプレースホルダーに供給する別の方法はありますか?
うまくいけば、Ubuntu、SCL、およびPython 2.7で作業しています。すべての標準numpyおよびtensorflowパッケージがインストールされています。
コード全体がなければ、正確に答えることは困難です。おもちゃの例で説明した内容を再現しようとしましたが、うまくいきました。
import tensorflow as tf
import numpy as np
x = tf.placeholder(tf.float32, shape=[None, 2])
y_ = tf.placeholder(tf.float32, shape=[None, 2])
loss = tf.reduce_sum(tf.abs(tf.sub(x, y_)))#Function chosen arbitrarily
input_x=np.random.randn(100, 2)#Random generation of variable x
input_y=np.random.randn(100, 2)#Random generation of variable y
with tf.Session() as sess:
print(sess.run(loss, feed_dict={x: input_x, y_: input_y}))