web-dev-qa-db-ja.com

tf.reshape()を使用するにはどうすればよいですか?

import tensorflow as tf    
import random    
import numpy as np    

x = tf.placeholder('float')   
x = tf.reshape(x, [-1,28,28,1])

with tf.Session() as sess:
    x1 = np.asarray([random.uniform(0,1) for i in range(784)])
    result = sess.run(x, feed_dict={x: x1})
    print(result)

再整形でmnistデータを使用するときにいくつかの問題がありましたが、この質問は私の問題の簡略化されたバージョンです...なぜ実際にこのコードが機能しないのですか?

それが示している

"ValueError:形状 '(?、28、28、1)'を持つTensor 'Reshape:0'の形状(784、)の値をフィードできません。

どうすれば解決できますか?

5
voice

再割り当て後、xは形状[-1,28,28,1]のテンソルであり、エラーが示すように、(784,)(?, 28, 28, 1)に形状化することはできません。別の変数名を使用できます。

import tensorflow as tf
import random
import numpy as np
x= tf.placeholder('float')
y=tf.reshape(x,[-1,28,28,1])
with tf.Session() as sess:
    x1 = np.asarray([random.uniform(0,1) for i in range(784)])
    result = sess.run(y, feed_dict={x: x1})
    print(result)
3
Dinesh

概念的にsess.run(x, feed_dict{x:x1})を使用しているため、ここでエラーが発生します。これは、同じ変数をフィードして再形成しようとしています。これにより、実行時に問題が発生します。したがって、単一の変数を使用してこれを行うことはできません。

import tensorflow as tf
import random
import numpy as np

x = tf.placeholder('float')
y = tf.reshape(x, [-1,28,28,1])

with tf.Session() as sess:
    x1 = np.asarray([random.uniform(0,1) for i in range(784)])
    result = sess.run(y, feed_dict={x: x1})
    print(result)

Tensorflowでは、変数はプレースホルダーです。したがって、xは浮動小数点値を保持し、y[-1,28,28,1]の値を保持するという別の変数を保持します。

同じ変数名を使用する場合は、2つのもののプレースホルダーとして機能する必要があります。これは不可能です。

0
shantanu pathak