0

我要编码的数据如下所示:

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

张量("strided_slice:0", shape=(43,), dtype=int32)

有人可以将我推向正确的方向吗:)

4

1 回答 1

0

输出正确且符合预期。trainhot[1] 是第二个(从 0 开始的索引)训练样本的标签,它是一维形状 (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)
于 2016-12-27T05:42:52.713 回答