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、)の値をフィードできません。
どうすれば解決できますか?
再割り当て後、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)
概念的に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つのもののプレースホルダーとして機能する必要があります。これは不可能です。