2016-08-25 4 views
2

にDTYPE np.float32を食べさせます私はタイプのnumpyのndarrayを供給しようとしていますTensorFlowプレースホルダ

n_steps = 10 
n_input = 13 
n_classes = 1201 

x = tf.placeholder("float", [None, n_steps, n_input]) 
y = tf.placeholder("float", [None, n_classes]) 

そして、それは私に上記のエラーを与えている行がある:

sess.run(optimizer, feed_dict={x: batch_x, y: batch_y}) 

どこBATC h_xとbatch_yはdtype( 'float32')のnumpy ndarraysです。

(Pdb)batch_x.dtype 
dtype('float32') 
(Pdb)x.dtype 
tf.float32 

私はまた、xはDTYPE tf.float32であるようにそれはそうとtf.float32するタイプキャストbatch_xとbatch_yを試みたが、タイプ - でコードを実行している:以下は、私はPDBを使用して印刷タイプですキャスト:

sess.run(optimizer, feed_dict={x: tf.to_float(batch_x), y: tf.to_float(batch_y)}) 

は、次のエラーを与える:

TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, or numpy ndarrays. 

は、どのように私はプレースホルダを養う必要がありますか?どんなタイプのものを使うべきですか? ヘルプ/アドバイスは大歓迎です!

+0

あなたが正しいと思われるもの。より小さなプログラムを試してみませんか?たとえば、次のことは可能ですか? 'z = tf.reduce_sum(x)+ tf.reduce_sum(y);sess.run(z、feed_dict = {x:np.zeros([1、10、13])、y:np.zeros([1、1201])}) ' – keveman

答えて

2

最初の問題については、batch_yfloat32であることを確認してください。 batch_xタイプのトレースのみを提供し、batch_yは、クラスのワンホットエンコーディングのように見えるので、整数である可能性が高くなります。

第2の問題は、通常のnumpy配列でテンソル演算であるtf.to_floatを使用することです。あなたはnumpyキャストを使用してください:

sess.run(optimizer, feed_dict={x: batch_x.astype(np.float32), y: batch_y.astype(np.float32)}) 
関連する問題