embedding_lookup常用于NLP中将one-hot编码转换为对应的向量编码。
embedding_lookup(
params, # embedding_params 对应的转换向量
ids, # inputs_ids,标记着要查询的id
partition_strategy='mod', #分割方式
name=None,
validate_indices=True, # deprecated
max_norm=None
)
params, # embedding_params 对应的转换向量
ids, # inputs_ids,标记着要查询的id
partition_strategy='mod', #分割方式
name=None,
validate_indices=True, # deprecated
max_norm=None
)
用法举例:
import tensorflow as tf
import numpy as np
embedding_param=np.array([[1,2,3,0.1],[4,5,6,0.2],[7,8,9,0.3]])#定义一个pXq的矩阵,3行4列的矩阵
input_ids=np.array([0,2])
input_ids2=np.array([[0],[1]])#要转化的矩阵为mXn
input_embedding = tf.nn.embedding_lookup(embedding_param, input_ids)#根据input_ids中的元素值对应取出嵌入矩阵的元素
input_embedding2 = tf.nn.embedding_lookup(embedding_param, input_ids2)#若要转换的向量是一个矩阵mXn,则转换后的矩阵为多维矩阵,维度为mxnxq
with tf.Session() as sess:
print(sess.run(input_embedding))#这里将嵌入矩阵的第0行,第2行元素取出来[[ 1. 2. 3. 0.1]
#[ 7. 8. 9. 0.3]]
print(sess.run(input_embedding2).shape)#(2, 2, 4)
print(sess.run(input_embedding2))#[[[ 1. 2. 3. 0.1]
#[ 7. 8. 9. 0.3]]
#[[ 4. 5. 6. 0.2]
#[ 7. 8. 9. 0.3]]]