tf.nn.embedding_lookupの基本的な構文は次の通りです:
tf.nn.embedding_lookup(params, ids)
- params: エンベディング行列(テンソル)です。各インデックスに対応するベクトルが格納されています。
- ids: インデックス(整数値または整数のテンソル)です。エンベディング行列から取得したい要素のインデックスを指定します。
例えば、以下のようなエンベディング行列があるとします:
embedding_matrix = tf.Variable([[0.1, 0.2, 0.3],
[0.4, 0.5, 0.6],
[0.7, 0.8, 0.9]])
この場合、インデックス0に対応するベクトルを取得するには、次のようにします:
import tensorflow as tf
embedding_matrix = tf.Variable([[0.1, 0.2, 0.3],
[0.4, 0.5, 0.6],
[0.7, 0.8, 0.9]])
ids = tf.constant([0])
embedding_vector = tf.nn.embedding_lookup(embedding_matrix, ids)
print(embedding_vector)
出力:
<tf.Tensor: shape=(1, 3), dtype=float32, numpy=array([[0.1, 0.2, 0.3]], dtype=float32)>
この例では、エンベディング行列からインデックス0に対応するベクトル [0.1, 0.2, 0.3] が取得されます。
tf.nn.embedding_lookupは、バッチ処理やシーケンスデータの処理にも適用することができます。例えば、バッチ内の各サンプルに対して異なるインデックスを指定することも可能です。
以上がtf.nn.embedding_lookup関数の基本的な使い方と動作原理の説明です。これを活用することで、エンベディング行列から指定したインデックスに対応するベクトルを効率的に取得することができます。