原文知乎
embedding_lookup(params, ids)
其实就是按照ids顺序返回params中的第ids行。比如说,ids=[1,3,2],就是返回params中第1,3,2行。返回结果为由params的1,3,2行组成的tensor.
例子(tensorflow这个Niao性,举个例子懵逼没出来,随时想着:构建流程图先):
import tensorflow as tf
import numpy as np
sess=tf.InteractiveSession()
#np.identity构造方形单位矩阵
embedding=tf.Variable(np.identity(5,dtype=np.int32))
input_ids=tf.placeholder(dtype=tf.int32,shape=[None])
#只能用占位符作为第二个参数
input_embedding=tf.nn.embedding_lookup(embedding,input_ids)
tf.global_variables_initializer().run()
print (sess.run(embedding))
print (sess.run(input_embedding,feed_dict={input_ids:[1,2,3,0,3,2,1]}))
输出:
[[1 0 0 0 0]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]]
[[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[1 0 0 0 0]
[0 0 0 1 0]
[0 0 1 0 0]
[0 1 0 0 0]]