2016-12-31 102 views
1

我无法将这个非常简单的tensorflow代码关闭。我试图做一个简单的线形拟合的形式y = theta1 * x + theta2tensorflow单个维度的占位符

我创建了x和y的数据作为形状为[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"]()]] 

但是,据我所知没有不匹配。

回答

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孙:

我想通过列表[火车,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)未经执行饲料“你必须养活占位符张量的值” 。

+0

也许你可以添加一行解释? – martianwars

+0

为我工作,但它为什么工作?是否因为更新版本的TF需要sess.run将节点列表作为参数?但是,错误信息是非常神秘的... –