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)'的张量'Reshape:0'提供形状(784,)的值。
我该如何解决?
答案 0 :(得分:2)
重新分配后,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)
答案 1 :(得分:0)
概念上 因为在使用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]的值
如果使用相同的变量名,则它必须充当两件事的占位符。这是不可能的。