我正在使用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。
答案 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)