首页 文章

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

提问于
浏览
1

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

InvalidArgumentError(请参见上面的回溯):您必须使用dtype float和shape [?,1] [[Node:y = Placeholderdtype = DT_FLOAT,shape = [?,1],_device =为占位符张量'y'提供值) “/作业:本地主机/复制: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

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

    See example here .

    一个有用的起点是official Tensorflow guides

相关问题