tf.nn.embedding_look 通过参数 ids 查表检索params中对应位置的矩阵,进行维度的扩展,所以 传入的是一维矩阵如[None, 1],则输出 [None,1,embedding] 如果是多维的如[None, seq_length] ,则输 出[None, seq_length, embedding_size]
tf.nn.embedding_lookup(
params,
ids,
partition_strategy='mod',
name=None,
validate_indices=True,
max_norm=None
)
作用:在params表中按照ids查询向量。params是一个词表,大小为NH,N为词的数量,H为词向量维度的大小。图中的params大小为310,表示有3个词,每个词有10维。一句话中有四个词,对应的id为0,2,0,1,按照ids在params中查找。(注意此处只是举例说明,params可以是任意含义的表,不一定是词表,可以是张量,可以是list)

import tensorflow as tf
params = tf.constant([[0.1, 0.4, 0.5, 7.0, 6.4, 1.2, 0.5, 0.3, 3.3, 2.0],
[0.3, 0.4, 0.9, 0.8, 0.5, 0.3, 0.7, 0.5, 0.8, 3.2],
[0.4, 0.9, 1.1, 4.3, 3.4, 0.2, 0.3, 0.2, 0.5, 0.1]])
ids = tf.constant([0, 2, 0, 1])
ids_lookup = tf.nn.embedding_lookup(params, ids)
print("一维度的情况:ids:\n",ids,"\nids_lookup:\n", ids_lookup)
ids_2 = tf.constant([[0, 2, 0, 1]])
ids2_lookup = tf.nn.embedding_lookup(params, ids_2)
print("多维的情况:ids_2:\n", ids_2, "\nids_2_lookup:\n", ids2_lookup)

该博客详细解释了`tf.nn.embedding_lookup`在TensorFlow中的使用,它用于从参数矩阵中根据输入ids检索词向量。通过示例展示了如何处理一维和多维输入,输出对应的词向量矩阵。此外,还介绍了该操作在处理序列数据时的作用,例如在自然语言处理任务中的应用。
1384

被折叠的 条评论
为什么被折叠?



