如何使用tf.reshape()?

时间:2018-07-20 13:41:55

标签: python numpy tensorflow reshape mnist

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,)的值。

我该如何解决?

2 个答案:

答案 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]的值

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