TF一个热编码张量对象

时间:2018-09-02 16:10:14

标签: tensorflow

按照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)。

1 个答案:

答案 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]))