我很难从地面获得这个非常简单的张量流代码。我试图做一个y = theta1 * x + theta2
形式的简单线条拟合我创建了x和y的数据作为形状[10]的numpy float32数组,我创建了相应的占位符,如下所示:
tf_x = tf.placeholder(tf.float32, [10])
tf_y = tf.placeholder(tf.float32, [10])
我喂它们如下:
sess.run(train, feed_dict={tf_x: x_data, tf_y: y_data})
完整代码有点长,所以我创建了一个要点: https://gist.github.com/meowmiau/369393f41b679dd95f4ac4e2e16b0782
我得到的问题是:
tensorflow.python.framework.errors.InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder' with dtype float and shape [10]
[[Node: Placeholder = Placeholder[dtype=DT_FLOAT, shape=[10], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
然而,据我所知,没有不匹配。
答案 0 :(得分:1)
在您的代码中尝试此修改:
for i in range(1000):
x_data, y_data = gen_data()
_, e = sess.run([train, err], feed_dict={tf_x: x_data, tf_y: y_data})
print e
@Meng Sun:
我认为将列表[train,err]传递给sess.run()是一种可能的解决方案。 以下代码段的工作方式相同:
for i in range(1000):
x_data, y_data = gen_data()
feed_dict={tf_x: x_data, tf_y: y_data}
print(sess.run(err, feed_dict=feed_dict))
sess.run(train, feed_dict=feed_dict)
在您的代码中,两个占位符抛出错误“您必须为占位符张量提供值” 因为sess.run(错误)是在没有提要的情况下执行的。