我很难启动这个非常简单的tensorflow代码。我正在尝试做一个简单的线性拟合,其形式为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"]()]]
然而,据我所知,没有错配。
在代码中尝试此修改:
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
@孟孙:
我认为将列表[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(err)时没有提要。