首页 文章

Softmax矩阵到0/1(OneHot)编码矩阵?

提问于
浏览
5

假设我有以下张量 t 作为softmax函数的输出:

t = tf.constant(value=[[0.2,0.8], [0.6, 0.4]])
>> [ 0.2,  0.8]
   [ 0.6,  0.4]

现在我想将此矩阵 t 转换为类似于OneHot编码矩阵的矩阵:

Y.eval()
>> [   0,    1]
   [   1,    0]

我熟悉 c = tf.argmax(t) 会给我 t 的每一行的索引应该是1.但是从 cY 似乎很难 .

我已经尝试过的是使用 ct 转换为 tf.SparseTensor 然后使用 tf.sparse_tensor_to_dense() 来获取 Y . 但是这种转换涉及相当多的步骤并且对于任务来说似乎有点过头了 - 我甚至还没完成它,但我确信它可以工作 .

有没有更合适/简单的方法来进行我失踪的转换 .

我需要这个的原因是因为我在Python中有一个自定义的OneHot编码器,我可以在其中提供 Y . tf.one_hot()不够广泛 - 不允许自定义编码 .

相关问题:

1 回答

  • 6

    为什么不将tf.argmax()与tf.one_hot()结合起来 .

    Y = tf.one_hot(tf.argmax(t, dimension = 1), depth = 2)

相关问题