Python 必须为占位符张量';占位符1';使用dtype float

Python 必须为占位符张量';占位符1';使用dtype float,python,numpy,tensorflow,Python,Numpy,Tensorflow,这是我的密码。当我在Python Shell中输入x_列[0]时,我得到数组([3,5,73,33],dtype=float32),对于y_列[0],我得到数组([3,5,73,33]) 因此,我认为代码应该能够给出0和W的成本,即b的成本为1和0。但是这个错误出现了。我不知道怎样才能解决这个问题 供您参考,对于sess.run([成本、假设、训练],feed\u dict={X:X\u col[0],Y:Y\u col[0]}) 在您的打印语句中,我得到[960446.13,数组([76.92

这是我的密码。当我在Python Shell中输入
x_列[0]
时,我得到
数组([3,5,73,33],dtype=float32)
,对于
y_列[0]
,我得到
数组([3,5,73,33])

因此,我认为代码应该能够给出0和W的成本,即b的成本为1和0。但是这个错误出现了。我不知道怎样才能解决这个问题

供您参考,对于
sess.run([成本、假设、训练],feed\u dict={X:X\u col[0],Y:Y\u col[0]})

在您的
打印
语句中,我得到
[960446.13,数组([76.92639923127.702781681854.09997559838.57220459],dtype=float32),无

import tensorflow as tf

# H(x) = Wx + b

W = tf.Variable(tf.random_normal([1],name='weight'))
b = tf.Variable(tf.random_normal([1],name='bias'))

X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)

hypothesis = X * W + b

cost = tf.reduce_mean(tf.square(hypothesis - Y))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)

sess = tf.Session()
sess.run(tf.global_variables_initializer())

Weights = []

for step in range(100):
    sess.run([cost,hypothesis,train], feed_dict={X:x_col[0],Y:y_col[0]})
    if step % 99 ==0:
        print(step, sess.run(cost), sess.run(W), sess.run(b))
您使用的是
sess.run(cost)
,但成本取决于
X
Y
,您应该提供它们的值,因为它们是占位符。因此,您需要在
feed\u dict
中提供

print(step, sess.run(cost), sess.run(W), sess.run(b))

在您的
打印
语句中

import tensorflow as tf

# H(x) = Wx + b

W = tf.Variable(tf.random_normal([1],name='weight'))
b = tf.Variable(tf.random_normal([1],name='bias'))

X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)

hypothesis = X * W + b

cost = tf.reduce_mean(tf.square(hypothesis - Y))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)

sess = tf.Session()
sess.run(tf.global_variables_initializer())

Weights = []

for step in range(100):
    sess.run([cost,hypothesis,train], feed_dict={X:x_col[0],Y:y_col[0]})
    if step % 99 ==0:
        print(step, sess.run(cost), sess.run(W), sess.run(b))
您使用的是
sess.run(cost)
,但成本取决于
X
Y
,您应该提供它们的值,因为它们是占位符。因此,您需要在
feed\u dict
中提供

print(step, sess.run(cost), sess.run(W), sess.run(b))

在TensorFlow中,您定义了一个使用
sess.run()
语句执行的计算图。作为该图的一部分,
cost
操作由占位符
X
Y
定义。要计算
成本
,必须为
X
Y
输入一个值


在您的
print
语句中,您调用
sess.run(cost)
而不输入
X
Y
。这就是错误的原因

但是您已经执行了图形。只需存储结果值:

print(step, sess.run(cost, feed_dict={X: some_x_value, Y: some_y_value}), sess.run(W), sess.run(b))

并打印成本
C
和假设
H

的结果。在TensorFlow中,您定义了一个使用
sess.run()语句执行的计算图。作为该图的一部分,
cost
操作由占位符
X
Y
定义。要计算
成本
,必须为
X
Y
输入一个值


在您的
print
语句中,您调用
sess.run(cost)
而不输入
X
Y
。这就是错误的原因

但是您已经执行了图形。只需存储结果值:

print(step, sess.run(cost, feed_dict={X: some_x_value, Y: some_y_value}), sess.run(W), sess.run(b))

打印成本
C
和假设
H

@layoug的答案是正确的。只想向您展示您应该使用的代码:

C, H, _ = sess.run([cost,hypothesis,train], feed_dict={X:x_col[0],Y:y_col[0]})
运行训练op并一次性计算张量值更有效(请注意,您不必指定
假设
)。如果要显式计算任何张量,还必须传递占位符:

for step in range(100):
  cost_val, W_val, b_val, _ = sess.run([cost, W, b, train], 
                                       feed_dict={X:x_col[0],Y:y_col[0]})
  if step % 99 ==0:
    print(step, cost_val, W_val, b_val)

@拉伊格的答案是正确的。只想向您展示您应该使用的代码:

C, H, _ = sess.run([cost,hypothesis,train], feed_dict={X:x_col[0],Y:y_col[0]})
运行训练op并一次性计算张量值更有效(请注意,您不必指定
假设
)。如果要显式计算任何张量,还必须传递占位符:

for step in range(100):
  cost_val, W_val, b_val, _ = sess.run([cost, W, b, train], 
                                       feed_dict={X:x_col[0],Y:y_col[0]})
  if step % 99 ==0:
    print(step, cost_val, W_val, b_val)

选中所有您先前定义的占位符都已包含/输入到提要中。这是因为在计算图形时,占位符是在内存中创建的,如果每个占位符都在提要中被分配了实值,tensorflow将看起来,如果没有,那么它就会产生这样的错误-至少对我来说是这样。

检查前面定义的所有占位符都已包含/输入到提要中。这是因为在计算图形时,占位符是在内存中创建的,如果tensorflow中的每一个都在提要中被分配了真实值,那么tensorflow看起来就会,如果没有,那么它就会产生这样一个错误——至少在我的情况下是这样。

我正在使用google colab,我面临着同样的问题。 我通过按下“runtime”选项解决了这个问题,在这个选项中我按下了“restart and run all”


这重新启动了GoogleColab中的所有代码,错误不再显示

我正在使用google colab,我也遇到了同样的问题。 我通过按下“runtime”选项解决了这个问题,在这个选项中我按下了“restart and run all”


这重新启动了GoogleColab中的所有代码,错误不再显示

请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。感谢您编辑我的问题。很抱歉,我不打算遇到这种情况。请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。感谢您编辑我的问题。对不起,我不想那样。对不起,我不太明白。你能详细解释一下吗?希望现在清楚了。虽然你应该听从@Maxim的建议,但这样做效率更高对不起,我不太明白。你能详细解释一下吗?希望现在清楚了。虽然你应该遵循@Maxim的建议,但那样做效率更高