在tensorflow中,如何将索引列表转换为指标向量?

时间:2019-02-26 08:55:23

标签: python tensorflow

我的输入是

之类的索引列表
[1,3], [0,1,2]

如何将它们转换为固定长度的指标向量?

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

1 个答案:

答案 0 :(得分:5)

import tensorflow as tf

indices = [[1, 3, 0], [0, 1, 2]]
many_hot = tf.one_hot(indices, depth=4)
many_hot = tf.reduce_sum(many_hot, axis=1)

with tf.Session() as sess:
    print(sess.run(many_hot))

此打印

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

请注意,仅当所有索引在列表的每个条目中具有相同数量的索引时,此方法才有效。如果不是这种情况,则可以循环执行

import tensorflow as tf

indices = [[1, 3], [0, 1, 2]]
many_hots = []
for idx in indices:
    many_hot = tf.one_hot(idx, depth=4)
    many_hot = tf.reduce_sum(many_hot, axis=0)
    many_hots.append(many_hot)

many_hot = tf.stack(many_hots)

with tf.Session() as sess:
    print(sess.run(many_hot))

此打印

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