我要编码的数据如下所示:
print (train['labels'])
[0 0 0 ...,42 42 42]
从0-42
有43个班级现在我读到版本0.8中的tensorflow有一个针对一个热编码的新功能,所以我尝试使用它如下:
trainhot=tf.one_hot(train['labels'], 43, on_value=1, off_value=0)
唯一的问题是我认为输出不是我需要的
print (trainhot[1])
Tensor(“strided_slice:0”,shape =(43,),dtype = int32)
有人可以朝着正确的方向推动我吗:)
答案 0 :(得分:0)
输出正确且预期。 trainhot [1]是第二个(基于0的索引)训练样本的标签,其具有1D形状(43,)。您可以使用下面的代码来更好地理解tf.one_hot:
onehot = tf.one_hot([0, 0, 41, 42], 43, on_value=1, off_value=0)
with tf.Session() as sess:
onehot_v = sess.run(onehot)
print("v: ", onehot_v)
print("v shape: ", onehot_v.shape)
print("v[1] shape: ", onehot[1])
output:
v: [[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0]
[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1]]
v shape: (4, 43)
v[1] shape: Tensor("strided_slice:0", shape=(43,), dtype=int32)