如何解决“为占位符张量提供值”错误?

时间:2018-03-17 17:14:47

标签: python tensorflow

我是Tensorflow的新手,在阅读了一本书之后,我发现他们的样本数据对我来说过于冗长,无法遵循Tensorflow的工作。在这种情况下,我已经制作了自己的超小型csv文件。在完成几个错误后,我在脚本的末尾,似乎无法解决这个最终错误:

  

InvalidArgumentError(请参见上面的回溯):您必须使用dtype float和shape [?,1]为占位符张量'y'提供值   [[节点:y =占位符类型= DT_FLOAT,形状= [?,1],   _device = “/作业:本地主机/复制:0 /任务:0 /装置:CPU:0”]]

下面是我的代码,下面是我已经包含了print语句的输出。任何人都可以帮我理解这个错误。另外,我知道我的模拟数据不会输出任何合理的模型,我只想在切换到更复杂的数据之前先让它工作。谢谢!

import tensorflow as tf
import numpy as np
import pandas as pd
import tarfile
import os

def load_data():
    return pd.read_csv("datasets/housing/mock.csv")

#load the data  
mockData = load_data()
print("mock data:")
print(mockData)

#add the bias
mockDataPlusBias = np.c_[np.ones((3,1)), mockData]
print("Mock data and bias:")
print(mockDataPlusBias)

#create placeholders
X = tf.constant(mockDataPlusBias, dtype=tf.float32, name="X")
y = tf.placeholder(tf.float32, shape=(None,1), name="y")

#for use with matmul
XT = tf.transpose(X)
print("X:")
print(X)
print("XT:")
print(XT)
print("y:")
print(y)

theta = tf.matmul(tf.matmul(tf.matrix_inverse(tf.matmul(XT, XT)), XT), y)
with tf.Session() as sess:
    theta_value = theta.eval()
    print(theta_value)

最后是印刷声明:

mock data:
   col1  col2
0     1     2
1     4     5
2     7     8
Mock data and bias:
[[1. 1. 2.]
 [1. 4. 5.]
 [1. 7. 8.]]
X:
Tensor("X:0", shape=(3, 3), dtype=float32)
XT:
Tensor("transpose:0", shape=(3, 3), dtype=float32)
y:
Tensor("y:0", shape=(?, 1), dtype=float32)

1 个答案:

答案 0 :(得分:0)

似乎您已成功声明'y'的形状和类型,但实际上没有为y指定任何值。对于占位符,您还需要使用 feed_dict 在tf.Session运行期间设置y的值。

See example here

一个有用的起点是official Tensorflow guides