按照mnist简单示例运行简单logistic回归 我的代码:
x = np.array(xHotdog + xNotHotdog)
y = np.array(yHotdog + yNotHotdog)
print("y shape before: "+str(y.shape))
y = tf.one_hot(indices=y, depth=2)
print("y shape after: "+str(y.shape))
y.eval()
return x,y
后来我跑步:
sess.run([optimizer, cost], feed_dict={x: batch_xs,y: batch_ys})
得到错误:
TypeError:提要的值不能是tf.Tensor对象。 可接受的Feed值包括Python标量,字符串,列表,numpy ndarrays或TensorHandles,作为参考,张量对象为 通过的Tensor(“ one_hot:0”,shape =(6457,2),dtype = float32) 使用键Tensor(“ Placeholder_1:0”,shape =(?, 2),进入Feed dtype = float32)。
答案 0 :(得分:0)
您想将Tensor object
传递给feed_dict并引发错误。如docs中所述:
可选的 feed_dict 参数允许调用方覆盖 图中张量的值。
feed_dict :将图元素映射到值
的字典
因此,您需要feed_dict的一些值。如错误所示:
可接受的Feed值包括Python 标量,字符串,列表, numpy ndarrays 或 TensorHandles
选项1 :在您的情况下,您通过了Tensor object
导致此类异常。该问题可以通过以下方式解决:
y = tf.placeholder(tf.float32, [None, 10], name="Y")
y = tf.one_hot(indices=y, depth=2)
...
sess.run([optimizer, cost], feed_dict={x: batch_xs,y: batch_ys})
选项2 :您还可以使用以下方法评估值:(在这种情况下,不需要feed_dict):
a = np.random.randint(1, 10, [20])
b = tf.one_hot(a, depth=10)
with tf.Session() as sess:
print(a)
print(sess.run([b]))