我正在研究Tensoflow的语法网。
但是,我对使用--word_embeddings
选项的方式感到困惑。你能给我举个例子吗?非常感谢。
不太确定什么是 syntaxnet,但这里是我如何在我的序列到序列模型中使用词嵌入。
在这里,我声明了一个将存储嵌入的变量。它是一个矩阵,行数等于词汇表中的单词数 (NWORDS),每列是该单词的单词向量的大小 (WORD_VEC_SIZE)。它是随机初始化的,是模型的可训练参数。
word_embedding = tf.get_variable('word_embedding', shape = (NWORDS, WORD_VEC_SIZE), initializer = tf.truncated_normal_initializer(0.0, 1,0))
我的模型的输入是一个整数列表,表示嵌入中单词的索引。它的维度为 BATCH_SIZE x TIMESTEPS。
source_input = tf.placeholder(tf.int32, (BATCH_SIZE, TIME_STEPS), 'source_input')
使用嵌入和输入,我可以执行查找以将单词的整数表示形式转换为向量。
y = tf.nn.embedding_lookup([word_embedding], source_input)
现在 y 具有形状 (BATCH_SIZE, TIME_STEPS, WORD_VEC_SIZE) 并且可以输入模型进行进一步处理。