TensorFlow - 密集矢量到一热

时间:2017-06-23 15:21:53

标签: python tensorflow

假设我有以下张量:

T = [[0.1, 0.3, 0.7],
     [0.2, 0.5, 0.3],
     [0.1, 0.1, 0.8]]

我想将其转换为单热张量,使得尺寸为0的最大值的索引设置为1,所有其他索引设置为零,如下所示:

T_onehot = [[0, 0, 1],
            [0, 1, 0],
            [0, 0, 1]]

我知道有tf.argmax来获取张量中最大元素的索引,但是有没有什么方法可以让我一步到位地做我想做的事情?

1 个答案:

答案 0 :(得分:0)

我不知道是否有办法一步完成,但张量流中有one_hot函数:

import tensorflow as tf
T = tf.constant([[0.1, 0.3, 0.7], [0.2, 0.5, 0.3], [0.1, 0.1, 0.8]])
T_onehot = tf.one_hot(tf.argmax(T, 1), T.shape[1])
tf.InteractiveSession()
print(T_onehot.eval())

# [[ 0.  0.  1.]
#  [ 0.  1.  0.]
#  [ 0.  0.  1.]]