如何使用 tf.reshape()?

How do I use 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: Cannot feed value of shape (784,) for Tensor 'Reshape:0', which has shape '(?, 28, 28, 1)' ".

我该如何解决?

重新分配后,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].

形状的值

如果使用相同的变量名,那么它必须充当两件事的占位符。这是不可能的。