@@ -115,9 +115,9 @@ GRU\[[2](#参考文献)\]是Cho等人在LSTM上提出的简化版本,也是RNN
其中$W_sz_{i+1}+b_z$是对每个可能的输出单词进行打分,再用softmax归一化就可以得到第$i+1$个词的概率$p_{i+1}$。
-1. 根据$p_{i+1}$和$u_{i+1}$计算代价。
+3. 根据$p_{i+1}$和$u_{i+1}$计算代价。
-2. 重复步骤1~3,直到目标语言序列中的所有词处理完毕。
+4. 重复步骤1~3,直到目标语言序列中的所有词处理完毕。
机器翻译任务的生成过程,通俗来讲就是根据预先训练的模型来翻译源语言句子。生成过程中的解码阶段和上述训练过程的有所差异,具体介绍请见[柱搜索算法](#柱搜索算法)。
@@ -146,7 +146,7 @@ GRU\[[2](#参考文献)\]是Cho等人在LSTM上提出的简化版本,也是RNN
其中,$align$可以看作是一个对齐模型,用来衡量目标语言中第$i$个词和源语言中第$j$个词的匹配程度。具体而言,这个程度是通过解码RNN的第$i$个隐层状态$z_i$和源语言句子的第$j$个上下文片段$h_j$计算得到的。传统的对齐模型中,目标语言的每个词明确对应源语言的一个或多个词(hard alignment);而在注意力模型中采用的是soft alignment,即任何两个目标语言和源语言词间均存在一定的关联,且这个关联强度是由模型计算得到的实数,因此可以融入整个NMT框架,并通过反向传播算法进行训练。
-
+
图6. 基于注意力机制的解码器
@@ -213,7 +213,7 @@ max_length = 256 # 解码生成句子的最大长度
beam_size = 4 # beam search的柱宽度
batch_size = 64 # batch 中的样本数
-model_save_dir = "machine_translation.inference.model"
+model_file = "machine_translation"
```
接着定义所需要的数据输入:
@@ -538,7 +538,7 @@ for pass_id in six.moves.xrange(EPOCH_NUM):
(pass_id, batch_id, loss_val))
batch_id += 1
# 保存模型
- fluid.io.save_params(exe, model_save_dir, main_program=train_prog)
+ fluid.save(train_prog, model_file)
```
## 应用模型
@@ -572,7 +572,7 @@ loader.set_batch_generator(inputs_generator(batch_size,
# 定义执行器,加载参数并绑定Program
exe = fluid.Executor(places[0])
exe.run(startup_prog)
-fluid.io.load_params(exe, model_save_dir, main_program=infer_prog)
+fluid.load(infer_prog, model_file, exe)
prog = fluid.CompiledProgram(infer_prog).with_data_parallel()
```
@@ -608,7 +608,7 @@ for data in loader():
```txt
Original sentence:
A man in an orange hat starring at something .
-Translated score and sentence:
+Translated sentence:
Ein Mann mit einem orangen Schutzhelm starrt auf etwas .
Ein Mann mit einem gelben Schutzhelm starrt auf etwas .
Ein Mann mit einem gelben Schutzhelm starrt etwas an .
diff --git a/doc/fluid/user_guides/nlp_case/machine_translation/index.cn.html b/doc/fluid/user_guides/nlp_case/machine_translation/index.cn.html
index 61a683444976ce59a5acab8eae1dd6566c62c44d..e9c1314690a720dfdd05ea512386d4b458a620ec 100644
--- a/doc/fluid/user_guides/nlp_case/machine_translation/index.cn.html
+++ b/doc/fluid/user_guides/nlp_case/machine_translation/index.cn.html
@@ -255,7 +255,7 @@ max_length = 256 # 解码生成句子的最大长度
beam_size = 4 # beam search的柱宽度
batch_size = 64 # batch 中的样本数
-model_save_dir = "machine_translation.inference.model"
+model_file = "machine_translation"
```
接着定义所需要的数据输入:
@@ -580,7 +580,7 @@ for pass_id in six.moves.xrange(EPOCH_NUM):
(pass_id, batch_id, loss_val))
batch_id += 1
# 保存模型
- fluid.io.save_params(exe, model_save_dir, main_program=train_prog)
+ fluid.save(train_prog, model_file)
```
## 应用模型
@@ -614,7 +614,7 @@ loader.set_batch_generator(inputs_generator(batch_size,
# 定义执行器,加载参数并绑定Program
exe = fluid.Executor(places[0])
exe.run(startup_prog)
-fluid.io.load_params(exe, model_save_dir, main_program=infer_prog)
+fluid.load(infer_prog, model_file, exe)
prog = fluid.CompiledProgram(infer_prog).with_data_parallel()
```
diff --git a/doc/fluid/user_guides/nlp_case/machine_translation/seq2seq.py b/doc/fluid/user_guides/nlp_case/machine_translation/seq2seq.py
index e4c118e54ad6b7880347e02d0549d11c3c6dc9c8..294dad7abea3bd7085c5e4184a46efd373cf28f7 100644
--- a/doc/fluid/user_guides/nlp_case/machine_translation/seq2seq.py
+++ b/doc/fluid/user_guides/nlp_case/machine_translation/seq2seq.py
@@ -31,7 +31,7 @@ max_length = 256
beam_size = 4
batch_size = 64
-model_save_dir = "machine_translation.inference.model"
+model_file = "machine_translation"
class DecoderCell(layers.RNNCell):
@@ -289,7 +289,7 @@ def train(use_cuda):
print('pass_id: %d, batch_id: %d, loss: %f' %
(pass_id, batch_id, loss_val))
batch_id += 1
- fluid.io.save_params(exe, model_save_dir, main_program=train_prog)
+ fluid.save(train_prog, model_file)
def infer(use_cuda):
@@ -312,7 +312,7 @@ def infer(use_cuda):
exe = fluid.Executor(places[0])
exe.run(startup_prog)
- fluid.io.load_params(exe, model_save_dir, main_program=infer_prog)
+ fluid.load(infer_prog, model_file, exe)
prog = fluid.CompiledProgram(infer_prog).with_data_parallel()
for data in loader():