Tensorflow:feed_dict的形状错误{}

时间:2017-10-23 14:34:56

标签: python tensorflow reshape placeholder

第一次遇到这样的问题。

错误大约是dialogWindow.set_width("500px"),似乎需要重新塑造feed_dict={tfkids: kids, tfkids_fit: kids_fit}

任何人都可以帮我解决这个问题吗?

kids_fit

尝试测试代码时会出错。

  

ValueError:无法为Tensor' Placeholder:0'提供形状值(10,),其形状为'(10,1)'

3 个答案:

答案 0 :(得分:1)

你可以重塑孩子的张量。

kids = sess.run(make_kids)
kids = tf.reshape(kids,(None,1))
kids_fit = get_fitness(F(kids))
sess.run(train_op, feed_dict={tfkids: kids, tfkids_fit: kids_fit})

答案 1 :(得分:1)

Placeholder:0tfkids = tf.placeholder(tf.float32, [POP_SIZE, DNA_SIZE])

如您所见,tfkids形状为[POP_SIZE, DNA_SIZE] = (10, 1)

您的kids变量的形状为(10)

虽然两个形状都包含10个值,但第一个包含2个维度,而第二个包含1个D.

因此,您必须扩展kids变量的维度,以便以这种方式与tfkids兼容:

sess.run(train_op, feed_dict={tfkids: np.expand_dims(kids, axis=1), tfkids_fit: kids_fit})

np.expand_dims可让您为kids形状

添加一维尺寸

答案 2 :(得分:1)

问题:当您声明tfkids变量时,您将其形状指定为[POP_SIZE, DNA_SIZE],即(10,1)。但是当您在训练期间将实际数据输入占位符时,您传递的是(10)形状的数据。

<强>解决方案: 因此,您必须将训练数据重新整形为(10,1),以便将其提供给变量。您可以通过多种方式重塑数据。您可以使用numpy库的重塑功能。在为您提供训练数据之前,请执行以下操作。

kids = np.reshape(kids, [-1, 1])

希望这有帮助!