【问题标题】:How do I use tf.reshape()?如何使用 tf.reshape()?
【发布时间】:2018-12-28 20:18:08
【问题描述】:
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: 无法为 Tensor 'Reshape:0' 提供形状 (784,) 的值,其形状为 '(?, 28, 28, 1)'”。

我该如何解决?

【问题讨论】:

    标签: python numpy tensorflow reshape mnist


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

      概念上 你在这里得到错误,因为当你使用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] 的值。

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

      【讨论】:

        猜你喜欢
        • 2018-05-19
        • 2022-07-04
        • 2019-01-13
        • 2018-08-30
        • 1970-01-01
        • 2017-10-28
        • 1970-01-01
        • 1970-01-01
        • 2018-09-30
        相关资源
        最近更新 更多