是否有可能(以一种很好的方式,即)在tensorflow中实现下一个功能:
假设我们有一个密集的标签向量
labels = [0,3,1,2,0]
我需要制作一个“多个热编码器”。意思是,对于每一行,我需要1到标签的索引减去1 所以要求的结果将是
[[0, 0, 0],
[1, 1, 1],
[0, 0, 1],
[0, 1, 1],
[0, 0, 0]]
感谢
答案 0 :(得分:3)
您可以使用tf.nn.embeddings_lookup执行此操作,如下所示:
embeddings = tf.constant([[0,0,0], [0,0,1], [0,1,1], [1,1,1]])
labels = [0,3,1,2,0]
encode_tensors = tf.nn.embedding_lookup(embeddings,labels)
sess.run(encode_tensors)的输出:
array([[0, 0, 0],
[1, 1, 1],
[0, 0, 1],
[0, 1, 1],
[0, 0, 0]], dtype=int32)
希望这有帮助!
答案 1 :(得分:0)
完成:
也可以使用:
In [397]: labels = np.array([1, 2, 0, 3, 0])
In [398]: sess.run(tf.sequence_mask(labels, 3, dtype=tf.int8))
Out[398]:
array([[1, 0, 0],
[1, 1, 0],
[0, 0, 0],
[1, 1, 1],
[0, 0, 0]], dtype=int8)
结果矩阵将与我的要求相反