准备培训数据,我可以使用tf.argmax进行测试

时间:2017-04-12 08:26:31

标签: python-3.x numpy machine-learning tensorflow neural-network

我正在使用CIFAR进行Tensorflow培训,但我正在将MNIST代码更改为我现在需要的代码,但我无法找到让tf.argmax通过其原始设计完成工作的方法。现在需要转换数组,

[2, 7, 1, 5, 3]

进入

[[0, 1, 0, 0, 0, 0, 0, 0], 
 [0, 0, 0, 0, 0, 0, 0, 1], 
 [0, 1, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 1, 0, 0],
 [0, 0, 0, 1, 0, 0, 0, 0]] 

我该怎么办?我正在使用CIFAR 100数据库,您可以get my code

1 个答案:

答案 0 :(得分:1)

看起来你需要的是one-hot encoding。要获得单热编码,请将索引指定为python列表,并将其与所需的depth一起传递给tf.one_hot

# a numpy array could also work
In [85]: idx = [2, 7, 1, 5, 3]

In [86]: one_hot_vec = tf.one_hot(idx, depth=8, dtype=tf.int32)

In [87]: sess = tf.InteractiveSession()

In [91]: one_hot_vec = tf.one_hot(idx, depth=8, dtype=tf.int32)

In [92]: one_hot_vec.eval()
Out[92]: 
array([[0, 0, 1, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 1],
       [0, 1, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 1, 0, 0],
       [0, 0, 0, 1, 0, 0, 0, 0]], dtype=int32)