tensorflow将标签向量转换为;“多个热编码器”;

tensorflow将标签向量转换为;“多个热编码器”;,tensorflow,Tensorflow,tensorflow是否有可能(以一种很好的方式)实现下一个功能: 假设我们有一个密集的标签向量 labels = [0,3,1,2,0] 我需要做一个“多热编码器”。也就是说,对于每一行,我需要1到标签的索引减去1 因此,所需的结果将是 [[0, 0, 0], [1, 1, 1], [0, 0, 1], [0, 1, 1], [0, 0, 0]] 谢谢您可以使用tf.nn.embeddings\u查找来完成此操作,如下所示: embeddings = tf.constant([[0

tensorflow是否有可能(以一种很好的方式)实现下一个功能:

假设我们有一个密集的标签向量

labels = [0,3,1,2,0]
我需要做一个“多热编码器”。也就是说,对于每一行,我需要1到标签的索引减去1 因此,所需的结果将是

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

谢谢

您可以使用tf.nn.embeddings\u查找来完成此操作,如下所示:

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的输出(编码张量):

希望这有帮助

完成:

也可以使用:

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)
结果矩阵将与我所问的相反

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)