On exécute la fonction tf.nn.embedding_lookup (qui permet d’exécuter l’opération de recherche tensorielle) entre la matrice identité et ses données:

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np
a = 5
b = [1, 2, 3]

# one hot an integer
one_hot_a = tf.nn.embedding_lookup(np.identity(10), a)

# one hot a list of integers
one_hot_b = tf.nn.embedding_lookup(np.identity(max(b)+1), b)

with tf.Session() as sess:
print(sess.run([one_hot_a, one_hot_b]))

Output:

1
2
3
[array([0., 0., 0., 0., 0., 1., 0., 0., 0., 0.]), array([[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])]