我的输入是
之类的索引列表[1,3], [0,1,2]
如何将它们转换为固定长度的指标向量?
[0, 1, 0, 1], [1, 1, 1, 0]
答案 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.]]