【发布时间】:2019-07-11 06:03:56
【问题描述】:
我正在尝试使用 tensorflow 编写一个简单的神经机器翻译。但是我对 tensorflow 上的嵌入的理解有点卡住了:
- 我不明白
tf.contrib.layers.embed_sequence(inputs, vocab_size=target_vocab_size,embed_dim=decoding_embedding_size)之间的区别
和
dec_embeddings = tf.Variable(tf.random_uniform([target_vocab_size, decoding_embedding_size]))
dec_embed_input = tf.nn.embedding_lookup(dec_embeddings, dec_input)
在什么情况下我应该使用一个到另一个?
- 我不明白的第二件事是关于 tf.contrib.seq2seq.TrainingHelper 和 tf.contrib.seq2seq.GreedyEmbeddingHelper。我知道在翻译的情况下,我们主要使用 TrainingHelper 进行训练步骤(使用前一个目标来预测下一个目标)和 GreedyEmbeddingHelper 进行推理步骤(使用前一个时间步来预测下一个目标)。 但我不明白它是如何工作的。特别是使用的不同参数。例如,在 TrainingHelper 的情况下为什么我们需要一个序列长度(为什么我们不使用 EOS)?为什么他们两个都不使用 embedding_lookup 或 embedding_sequence 作为输入?
【问题讨论】:
标签: tensorflow nlp word-embedding machine-translation