机器翻译的demo的一些问题
Created by: daiwk
有以下几个问题:
- "定义解码阶段每一个时间步的RNN行为,即根据当前时刻的源语言上下文向量..."这段话里最后一点的"最后,使用softmax归一化计算单词的概率,将out结果返回,即实现公式"这里的公式,i是不是应该改成i+1呢
- 使用的reader是wmt14.py中提供的reader,该reader最终的返回如下:
for name in names:
for line in f.extractfile(name):
line_split = line.strip().split('\t')
if len(line_split) != 2:
continue
src_seq = line_split[0] # one source sequence
src_words = src_seq.split()
src_ids = [
src_dict.get(w, UNK_IDX)
for w in [START] + src_words + [END]
]
trg_seq = line_split[1] # one target sequence
trg_words = trg_seq.split()
trg_ids = [trg_dict.get(w, UNK_IDX) for w in trg_words]
# remove sequence whose length > 80 in training mode
if len(src_ids) > 80 or len(trg_ids) > 80:
continue
trg_ids_next = trg_ids + [trg_dict[END]]
trg_ids = [trg_dict[START]] + trg_ids
yield src_ids, trg_ids, trg_ids_next
而在模型实际使用时,直接指定的name,但好像没看到reader常见的feeding参数,好奇这些name是在哪里和yield的下标对应上的呢
src_word_id = paddle.layer.data(
name='source_language_word',
type=paddle.data_type.integer_value_sequence(source_dict_dim))
trg_embedding = paddle.layer.embedding(
input=paddle.layer.data(
name='target_language_word',
type=paddle.data_type.integer_value_sequence(target_dict_dim)),
size=word_vector_dim,
param_attr=paddle.attr.ParamAttr(name='_target_language_embedding'))
lbl = paddle.layer.data(
name='target_language_next_word',
type=paddle.data_type.integer_value_sequence(target_dict_dim))