用PaddlePaddle实现机器翻译

原创
2020/04/26 15:04
阅读数 258

背景介绍

机器翻译(machine translation, MT)是用计算机来实现不同语言之间翻译的技术。被翻译的语言通常称为源语言(source language),翻译成的结果语言称为目标语言(target language)。机器翻译即实现从源语言到目标语言转换的过程,是自然语言处理的重要研究领域之一。

早期机器翻译系统多为基于规则的翻译系统,需要由语言学家编写两种语言之间的转换规则,再将这些规则录入计算机。该方法对语言学家的要求非常高,而且我们几乎无法总结一门语言会用到的所有规则,更何况两种甚至更多的语言。因此,传统机器翻译方法面临的主要挑战是无法得到一个完备的规则集合[1]。

为解决以上问题,统计机器翻译(Statistical Machine Translation, SMT)技术应运而生。在统计机器翻译技术中,转化规则是由机器自动从大规模的语料中学习得到的,而非我们人主动提供规则。因此,它克服了基于规则的翻译系统所面临的知识获取瓶颈的问题,但仍然存在许多挑战:1)人为设计许多特征(feature),但永远无法覆盖所有的语言现象;2)难以利用全局的特征;3)依赖于许多预处理环节,如词语对齐、分词或符号化(tokenization)、规则抽取、句法分析等,而每个环节的错误会逐步累积,对翻译的影响也越来越大。

近年来,深度学习技术的发展为解决上述挑战提供了新的思路。将深度学习应用于机器翻译任务的方法大致分为两类:1)仍以统计机器翻译系统为框架,只是利用神经网络来改进其中的关键模块,如语言模型、调序模型等(见图1的左半部分);2)不再以统计机器翻译系统为框架,而是直接用神经网络将源语言映射到目标语言,即端到端的神经网络机器翻译(End-to-End Neural Machine Translation, End-to-End NMT)(见图1的右半部分),简称为NMT模型。


图1. 基于神经网络的机器翻译系统

本教程主要介绍NMT模型,以及如何用PaddlePaddle来训练一个NMT模型。

下载安装命令

## CPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle

## GPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu

模型概览

本节依次介绍GRU(Gated Recurrent Unit,门控循环单元),双向循环神经网络(Bi-directional Recurrent Neural Network),NMT模型中典型的编码器-解码器(Encoder-Decoder)框架和注意力(Attention)机制,以及柱搜索(beam search)算法。

GRU

GRU是RNN的一种扩展,如下图所示。GRU单元只有两个门:

  • 重置门(reset gate):如果重置门关闭,会忽略掉历史信息,即历史不相干的信息不会影响未来的输出。
  • 更新门(update gate):将LSTM的输入门和遗忘门合并,用于控制历史信息对当前时刻隐层输出的影响。如果更新门接近1,会把历史信息传递下去。

图2. GRU(门控循环单元)

双向循环神经网络

我们这里介绍Bengio团队在论文[2,4]中提出的另一种结构。该结构的目的是输入一个序列,得到其在每个时刻的特征表示,即输出的每个时刻都用定长向量表示到该时刻的上下文语义信息。 具体来说,该双向循环神经网络分别在时间维以顺序和逆序——即前向(forward)和后向(backward)——依次处理输入序列,并将每个时间步RNN的输出拼接成为最终的输出层。这样每个时间步的输出节点,都包含了输入序列中当前时刻完整的过去和未来的上下文信息。下图展示的是一个按时间步展开的双向循环神经网络。该网络包含一个前向和一个后向RNN,其中有六个权重矩阵:输入到前向隐层和后向隐层的权重矩阵(W1,W3),隐层到隐层自己的权重矩阵(W2,W5),前向隐层和后向隐层到输出层的权重矩阵(W4,W6)。注意,该网络的前向隐层和后向隐层之间没有连接。


图3:按时间步展开的双向循环神经网络

编码器-解码器框架

编码器-解码器(Encoder-Decoder)[2]框架用于解决由一个任意长度的源序列到另一个任意长度的目标序列的变换问题。即编码阶段将整个源序列编码成一个向量,解码阶段通过最大化预测序列概率,从中解码出整个目标序列。编码和解码的过程通常都使用RNN实现。


图4:编码器-解码器框架

编码器

1.one-hot vector表示:将源语言句子x={x1, x2,…, xt}的每个词xi表示成一个列向量,i=1,2,…,T。这个向量Wi的维度与词汇表大小|V| 相同,并且只有一个维度上有值1(该位置对应该词在词汇表中的位置),其余全是0。

2.映射到低维语义空间的词向量:one-hot vector表示存在两个问题,1)生成的向量维度往往很大,容易造成维数灾难;2)难以刻画词与词之间的关系(如语义相似性,也就是无法很好地表达语义)。因此,需再one-hot vector映射到低维的语义空间,由一个固定维度的稠密向量(称为词向量)表示。记映射矩阵为,用表示第i个词的词向量,K为向量维度。

3.用RNN编码源语言词序列:这一过程的计算公式为,其中h0是一个全零的向量,∅θ是一个非线性激活函数,最后得到的h={h1,…, hT}就是RNN依次读入源语言T个词的状态编码序列。整句话的向量表示可以采用h在最后一个时间步T的状态编码,或使用时间维上的池化(pooling)结果。

第3步也可以使用双向循环神经网络实现更复杂的句编码表示,具体可以用双向GRU实现。前向GRU按照词序列(x1,…, xT)的顺序依次编码源语言端词,并得到一系列隐层状态。类似的,后向GRU按照(xT,…, x1)的顺序依次编码源语言端词,得到。最后对于词xi,通过拼接两个GRU的结果得到它的隐层状态,即hi=


图5:使用双向GRU的编码器

解码器

机器翻译任务的训练过程中,解码阶段的目标是最大化下一个正确的目标语言词的概率。思路是:

每一个时刻,根据源语言句子的编码信息(又叫上下文向量,context vector)c、真实目标语言序列的第i个词ui和i时刻RNN的隐层状态zi,计算出下一个隐层状态zi+1。计算公式如下:

其中∅θ’是一个非线性激活函数;c是源语言句子的上下文向量,在不使用注意力机制时,如果编码器的输出是源语言句子编码后的最后一个元素,则可以定义c=ht ;ui是目标语言序列的第i个单词,u0是目标语言序列的开始标记《s》,表示解码开始;zi是i时刻解码RNN的隐层状态,z0是一个全零的向量。

1.将zi+1通过softmax归一化,得到目标语言序列的第i+1个单词的概率分布pi+1。概率分布公式如下:

其中WsZi+1+bz是对每个可能的输出单词进行打分,再softmax归一化就可以得到第i+1个词的概率pi+1。 2.根据pi+1和ui+1计算代价。
3.重复步骤1~2,直到目标语言序列中的所有词处理完毕。

机器翻译任务的生成过程,通俗来讲就是根据预先训练的模型来翻译源语言句子。生成过程中的解码阶段和上述训练过程的有所差异,具体介绍请见柱搜索算法。

注意力机制

如果编码阶段的输出是一个固定维度的向量,会带来以下两个问题:1)不论源语言序列的长度是5个词还是50个词,如果都用固定维度的向量去编码其中的语义和句法结构信息,对模型来说是一个非常高的要求,特别是对长句子序列而言;2)直觉上,当人类翻译一句话时,会对与当前译文更相关的源语言片段上给予更多关注,且关注点会随着翻译的进行而改变。而固定维度的向量则相当于,任何时刻都对源语言所有信息给予了同等程度的关注,这是不合理的。因此,Bahdanau等人引入注意力(attention)机制,可以对编码后的上下文片段进行解码,以此来解决长句子的特征学习问题。下面介绍在注意力机制下的解码器结构。

与简单的解码器不同,这里zi的计算公式为:

可见,源语言句子的编码向量表示为第i个词的上下文片段ci,即针对每一个目标语言中的词ui,都有一个特定的ci与之对应。ci的计算公式如下:
从公式中可以看出,注意力机制是通过对编码器中各时刻的RNN状态hj进行加权平均实现的。权重aij表示目标语言中第i个词对源语言中第j个词的注意力大小,aij的计算公式如下:
其中,align可以看作是一个对齐模型,用来衡量目标语言中第i个词和源语言中第j个词的匹配程度。具体而言,这个程度是通过解码RNN的第i个隐层状态zi和源语言句子的第j个上下文片段hj计算得到的。传统的对齐模型中,目标语言的每个词明确对应源语言的一个或多个词(hard alignment);而在注意力模型中采用的是soft alignment,即任何两个目标语言和源语言词间均存在一定的关联,且这个关联强度是由模型计算得到的实数,因此可以融入整个NMT框架,并通过反向传播算法进行训练。

图6. 基于注意力机制的解码器

柱搜索算法

柱搜索(beam search)是一种启发式图搜索算法,用于在图或树中搜索有限集合中的最优扩展节点,通常用在解空间非常大的系统(如机器翻译、语音识别)中,原因是内存无法装下图或树中所有展开的解。如在机器翻译任务中希望翻译“《s》你好《e》”,就算目标语言字典中只有3个词(《s》,《e》 , hello),也可能生成无限句话(hello循环出现的次数不定),为了找到其中较好的翻译结果,我们可采用柱搜索算法。

柱搜索算法使用广度优先策略建立搜索树,在树的每一层,按照启发代价(heuristic cost)(本教程中,为生成词的log概率之和)对节点进行排序,然后仅留下预先确定的个数(文献中通常称为beam width、beam size、柱宽度等)的节点。只有这些节点会在下一层继续扩展,其他节点就被剪掉了,也就是说保留了质量较高的节点,剪枝了质量较差的节点。因此,搜索所占用的空间和时间大幅减少,但缺点是无法保证一定获得最优解。 使用柱搜索算法的解码阶段,目标是最大化生成序列的概率。思路是: 1.每一个时刻,根据源语言句子的编码信息cc、生成的第ii个目标语言序列单词ui和i时刻RNN的隐层状态zi,计算出下一个隐层状态zi+1。 2.将zi+1通过softmax归一化,得到目标语言序列的第i+1个单词的概率分布pi+1。 3.根据pi+1采样出单词ui+1。 4.重复步骤1~3,直到获得句子结束标记或超过句子的最大生成长度为止。

注意:zi+1和pi+1的计算公式同解码器中的一样。且由于生成时的每一步都是通过贪心法实现的,因此并不能保证得到全局最优解。

数据介绍

本教程使用WMT-16新增的multimodal task中的translation task的数据集。该数据集为英德翻译数据,包含29001条训练数据,1000条测试数据。

数据预处理

我们的预处理流程包括两步:

  • 将每个源语言到目标语言的平行语料库文件合并为一个文件:

  • 合并每个XXX.srcXXX.trg文件为XXX

  • XXX中的第iii行内容为XXX.src中的第iii行和XXX.trg中的第iii行连接,用'\t'分隔。

  • 创建训练数据的“源字典”和“目标字典”。每个字典都有DICTSIZE个单词,包括:语料中词频最高的(DICTSIZE - 3)个单词,和3个特殊符号<s>(序列的开始)、<e>(序列的结束)和<unk>(未登录词)。

示例数据

为了验证训练流程,PaddlePaddle接口paddle.dataset.wmt16中提供了对该数据集预处理后的版本,调用该接口即可直接使用,因为数据规模限制,这里只作为示例使用,在相应的测试集上具有一定效果但在更多测试数据上的效果无法保证。

 

注意

本项目代码需要使用GPU环境来运行:

 
 

并且检查相关参数设置, 例如use_gpu, fluid.CUDAPlace(0)等处是否设置正确.

In[1]
from __future__ import print_function
import os
import six

import numpy as np
import paddle
import paddle.fluid as fluid
import paddle.fluid.layers as layers

dict_size = 30000  # 词典大小
bos_id = 0  # 词典中start token对应的id
eos_id = 1  # 词典中end token对应的id
source_dict_size = target_dict_size = dict_size  # 源/目标语言字典大小
word_dim = 512  # 词向量维度
hidden_dim = 512  # 编码器中的隐层大小
decoder_size = hidden_dim  # 解码器中的隐层大小
max_length = 256  # 解码生成句子的最大长度
beam_size = 4  # beam search的柱宽度
batch_size = 64  # batch 中的样本数

model_save_dir = "machine_translation.inference.model"
 

接着定义所需要的数据输入:

In[2]
def data_func(is_train=True):
    # 源语言source数据
    src = fluid.data(name="src", shape=[None, None], dtype="int64")
    src_sequence_length = fluid.data(name="src_sequence_length",
                                     shape=[None],
                                     dtype="int64")
    inputs = [src, src_sequence_length]
    # 训练时还需要目标语言target和label数据
    if is_train:
        trg = fluid.data(name="trg", shape=[None, None], dtype="int64")
        trg_sequence_length = fluid.data(name="trg_sequence_length",
                                        shape=[None],
                                        dtype="int64")
        label = fluid.data(name="label", shape=[None, None], dtype="int64")
        inputs += [trg, trg_sequence_length, label]
    # data loader
    loader = fluid.io.DataLoader.from_generator(feed_list=inputs,
                                                capacity=10,
                                                iterable=True,
                                                use_double_buffer=True)
    return inputs, loader
 

然后如下实现使用双向GRU的编码器:

In[3]
def encoder(src_embedding, src_sequence_length):
    # 使用GRUCell构建前向RNN
    encoder_fwd_cell = layers.GRUCell(hidden_size=hidden_dim)
    encoder_fwd_output, fwd_state = layers.rnn(
        cell=encoder_fwd_cell,
        inputs=src_embedding,
        sequence_length=src_sequence_length,
        time_major=False,
        is_reverse=False)
    # 使用GRUCell构建反向RNN
    encoder_bwd_cell = layers.GRUCell(hidden_size=hidden_dim)
    encoder_bwd_output, bwd_state = layers.rnn(
        cell=encoder_bwd_cell,
        inputs=src_embedding,
        sequence_length=src_sequence_length,
        time_major=False,
        is_reverse=True)
    # 拼接前向与反向GRU的编码结果得到h
    encoder_output = layers.concat(
        input=[encoder_fwd_output, encoder_bwd_output], axis=2)
    encoder_state = layers.concat(input=[fwd_state, bwd_state], axis=1)
    return encoder_output, encoder_state
 

再实现基于注意力机制的解码器:

  • 首先通过 Cell 定义解码器中单步的计算,即zi+1=ϕθ′(ci,ui,zi),这里使用 GRU 并加上注意力机制(Additive Attention),代码如下:
In[4]
class DecoderCell(layers.RNNCell):
    def __init__(self, hidden_size):
        self.hidden_size = hidden_size
        self.gru_cell = layers.GRUCell(hidden_size)

    def attention(self, hidden, encoder_output, encoder_output_proj,
                  encoder_padding_mask):
        # 定义attention用以计算context,即 c_i,这里使用Bahdanau attention机制
        decoder_state_proj = layers.unsqueeze(
            layers.fc(hidden, size=self.hidden_size, bias_attr=False), [1])
        mixed_state = fluid.layers.elementwise_add(
            encoder_output_proj,
            layers.expand(decoder_state_proj,
                        [1, layers.shape(decoder_state_proj)[1], 1]))
        attn_scores = layers.squeeze(
            layers.fc(input=mixed_state,
                    size=1,
                    num_flatten_dims=2,
                    bias_attr=False), [2])
        if encoder_padding_mask is not None:
            attn_scores = layers.elementwise_add(attn_scores,
                                                encoder_padding_mask)
        attn_scores = layers.softmax(attn_scores)
        context = layers.reduce_sum(layers.elementwise_mul(encoder_output,
                                                        attn_scores,
                                                        axis=0),
                                    dim=1)
        return context

    def call(self,
             step_input,
             hidden,
             encoder_output,
             encoder_output_proj,
             encoder_padding_mask=None):
        # Bahdanau attention
        context = self.attention(hidden, encoder_output, encoder_output_proj,
                                encoder_padding_mask)
        step_input = layers.concat([step_input, context], axis=1)
        # GRU
        output, new_hidden = self.gru_cell(step_input, hidden)
        return output, new_hidden
 
  • 基于定义的单步计算,使用 fluid.layers.rnn 和 fluid.layers.dynamic_decode 分别实现用于训练和预测生成的多步循环解码器,如下:
In[5]
def decoder(encoder_output,
            encoder_output_proj,
            encoder_state,
            encoder_padding_mask,
            trg=None,
            is_train=True):
    # 定义 RNN 所需要的组件
    decoder_cell = DecoderCell(hidden_size=decoder_size)
    decoder_initial_states = layers.fc(encoder_state,
                                    size=decoder_size,
                                    act="tanh")
    trg_embeder = lambda x: fluid.embedding(input=x,
                                            size=[target_dict_size, hidden_dim],
                                            dtype="float32",
                                            param_attr=fluid.ParamAttr(
                                                name="trg_emb_table"))
    output_layer = lambda x: layers.fc(x,
                                       size=target_dict_size,
                                       num_flatten_dims=len(x.shape) - 1,
                                       param_attr=fluid.ParamAttr(name=
                                                                  "output_w"))
    if is_train:  # 训练
        # 训练时使用 `layers.rnn` 构造由 `cell` 指定的循环神经网络
        # 循环的每一步从 `inputs` 中切片产生输入,并执行 `cell.call`
        decoder_output, _ = layers.rnn(
            cell=decoder_cell,
            inputs=trg_embeder(trg),
            initial_states=decoder_initial_states,
            time_major=False,
            encoder_output=encoder_output,
            encoder_output_proj=encoder_output_proj,
            encoder_padding_mask=encoder_padding_mask)
        decoder_output = output_layer(decoder_output)
    else:  # 基于 beam search 的预测生成
        # beam search 时需要将用到的形为 `[batch_size, ...]` 的张量扩展为 `[batch_size* beam_size, ...]`
        encoder_output = layers.BeamSearchDecoder.tile_beam_merge_with_batch(
            encoder_output, beam_size)
        encoder_output_proj = layers.BeamSearchDecoder.tile_beam_merge_with_batch(
            encoder_output_proj, beam_size)
        encoder_padding_mask = layers.BeamSearchDecoder.tile_beam_merge_with_batch(
            encoder_padding_mask, beam_size)
        # BeamSearchDecoder 定义了单步解码的操作:`cell.call` + `beam_search_step`
        beam_search_decoder = layers.BeamSearchDecoder(cell=decoder_cell,
                                                       start_token=bos_id,
                                                       end_token=eos_id,
                                                       beam_size=beam_size,
                                                       embedding_fn=trg_embeder,
                                                       output_fn=output_layer)
        # 使用 layers.dynamic_decode 动态解码
        # 重复执行 `decoder.step()` 直到其返回的表示完成状态的张量中的值全部为True或解码步骤达到 `max_step_num`
        decoder_output, _ = layers.dynamic_decode(
            decoder=beam_search_decoder,
            inits=decoder_initial_states,
            max_step_num=max_length,
            output_time_major=False,
            encoder_output=encoder_output,
            encoder_output_proj=encoder_output_proj,
            encoder_padding_mask=encoder_padding_mask)

    return decoder_output
 

接着就可以使用编码器和解码器定义整个网络,如下:

In[6]
def model_func(inputs, is_train=True):
    # 源语言输入
    src = inputs[0]
    src_sequence_length = inputs[1]
    src_embeder = lambda x: fluid.embedding(
        input=x,
        size=[source_dict_size, hidden_dim],
        dtype="float32",
        param_attr=fluid.ParamAttr(name="src_emb_table"))
    src_embedding = src_embeder(src)

    # 编码器
    encoder_output, encoder_state = encoder(src_embedding, src_sequence_length)

    encoder_output_proj = layers.fc(input=encoder_output,
                                    size=decoder_size,
                                    num_flatten_dims=2,
                                    bias_attr=False)
    src_mask = layers.sequence_mask(src_sequence_length,
                                    maxlen=layers.shape(src)[1],
                                    dtype="float32")
    encoder_padding_mask = (src_mask - 1.0) * 1e9

    # 目标语言输入,训练时有、预测生成时无该输入
    trg = inputs[2] if is_train else None

    # 解码器
    output = decoder(encoder_output=encoder_output,
                     encoder_output_proj=encoder_output_proj,
                     encoder_state=encoder_state,
                     encoder_padding_mask=encoder_padding_mask,
                     trg=trg,
                     is_train=is_train)
    return output
 

为了进行训练还需要定义损失函数和优化器,如下:

In[7]
def loss_func(logits, label, trg_sequence_length):
    probs = layers.softmax(logits)
    # 使用交叉熵损失函数
    loss = layers.cross_entropy(input=probs, label=label)
    # 根据长度生成掩码,并依此剔除 padding 部分计算的损失
    trg_mask = layers.sequence_mask(trg_sequence_length,
                                    maxlen=layers.shape(logits)[1],
                                    dtype="float32")
    avg_cost = layers.reduce_sum(loss * trg_mask) / layers.reduce_sum(trg_mask)
    return avg_cost

def optimizer_func():
    # 设置梯度裁剪
    fluid.clip.set_gradient_clip(
        clip=fluid.clip.GradientClipByGlobalNorm(clip_norm=5.0))
    # 定义先增后降的学习率策略
    lr_decay = fluid.layers.learning_rate_scheduler.noam_decay(hidden_dim, 1000)
    return fluid.optimizer.Adam(
        learning_rate=lr_decay,
        regularization=fluid.regularizer.L2DecayRegularizer(
            regularization_coeff=1e-4))
 

训练模型

定义数据生成器

使用内置的paddle.dataset.wmt16.train接口定义数据生成器,其每次产生一条样本,shuffle和组完batch后对batch内的样本进行padding作为训练的输入;同时定义预测使用的数据生成器,如下:

In[8]
def inputs_generator(batch_size, pad_id, is_train=True):
    data_generator = fluid.io.shuffle(
        paddle.dataset.wmt16.train(source_dict_size, target_dict_size),
        buf_size=10000) if is_train else paddle.dataset.wmt16.test(
            source_dict_size, target_dict_size)
    batch_generator = fluid.io.batch(data_generator, batch_size=batch_size)

    # 对 batch 内的数据进行 padding
    def _pad_batch_data(insts, pad_id):
        seq_lengths = np.array(list(map(len, insts)), dtype="int64")
        max_len = max(seq_lengths)
        pad_data = np.array(
            [inst + [pad_id] * (max_len - len(inst)) for inst in insts],
            dtype="int64")
        return pad_data, seq_lengths

    def _generator():
        for batch in batch_generator():
            batch_src = [ins[0] for ins in batch]
            src_data, src_lengths = _pad_batch_data(batch_src, pad_id)
            inputs = [src_data, src_lengths]
            if is_train:  #训练时包含 target 和 label 数据
                batch_trg = [ins[1] for ins in batch]
                trg_data, trg_lengths = _pad_batch_data(batch_trg, pad_id)
                batch_lbl = [ins[2] for ins in batch]
                lbl_data, _ = _pad_batch_data(batch_lbl, pad_id)
                inputs += [trg_data, trg_lengths, lbl_data]
            yield inputs

    return _generator
 

构建训练程序

定义用于训练的Program,在其中创建训练的网络结构并添加优化器。同时还要定义用于初始化的Program,在创建训练网络的同时隐式的加入参数初始化的操作。

In[  ]
train_prog = fluid.Program()
startup_prog = fluid.Program()
with fluid.program_guard(train_prog, startup_prog):
    with fluid.unique_name.guard():
        # 训练时:
        # inputs = [src, src_sequence_length, trg, trg_sequence_length, label]
        inputs, loader = data_func(is_train=True)
        logits = model_func(inputs, is_train=True)
        loss = loss_func(logits, inputs[-1], inputs[-2])
        optimizer = optimizer_func()
        optimizer.minimize(loss)
 

定义训练环境

定义您的训练环境,包括指定所用的设备、绑定训练使用的数据源和定义执行器。

In[  ]
# 设置训练设备
use_cuda = True
places = fluid.cuda_places() if use_cuda else fluid.cpu_places()
# 设置数据源
loader.set_batch_generator(inputs_generator(batch_size,
                                            eos_id,
                                            is_train=True),
                            places=places)
# 定义执行器,初始化参数并绑定Program
exe = fluid.Executor(places[0])
exe.run(startup_prog)
prog = fluid.CompiledProgram(train_prog).with_data_parallel(
    loss_name=loss.name)
Cache file /home/aistudio/.cache/paddle/dataset/wmt16/wmt16.tar.gz not found, downloading http://paddlemodels.bj.bcebos.com/wmt/wmt16.tar.gz 
Begin to download

Download finished
 

训练主循环

通过训练循环数(EPOCH_NUM)来进行训练循环,并且每次循环都保存训练好的参数。注意,循环训练前要首先执行初始化的Program来初始化参数。另外作为示例这里EPOCH_NUM设置较小,该数据集上实际大概需要20个epoch左右收敛。

In[  ]
EPOCH_NUM = 2
for pass_id in six.moves.xrange(EPOCH_NUM):
    batch_id = 0
    for data in loader():
        loss_val = exe.run(prog, feed=data, fetch_list=[loss])[0]
        loss_val = np.mean(np.array(loss_val))
        print('pass_id: {}, batch_id: {}, loss: {}'.format(pass_id, batch_id, loss_val))
        batch_id += 1
    # 保存模型
    fluid.io.save_params(exe, model_save_dir, main_program=train_prog)
pass_id: 1, batch_id: 438, loss: 3.8864176273345947
pass_id: 1, batch_id: 439, loss: 4.014255523681641
pass_id: 1, batch_id: 440, loss: 3.934217929840088
pass_id: 1, batch_id: 441, loss: 3.987039566040039
pass_id: 1, batch_id: 442, loss: 3.9769933223724365
pass_id: 1, batch_id: 443, loss: 3.969778537750244
pass_id: 1, batch_id: 444, loss: 3.9275877475738525
pass_id: 1, batch_id: 445, loss: 3.9984993934631348
pass_id: 1, batch_id: 446, loss: 3.9405174255371094
pass_id: 1, batch_id: 447, loss: 3.920515298843384
pass_id: 1, batch_id: 448, loss: 3.812659978866577
pass_id: 1, batch_id: 449, loss: 3.998297691345215
pass_id: 1, batch_id: 450, loss: 3.9751908779144287
pass_id: 1, batch_id: 451, loss: 4.153567790985107
pass_id: 1, batch_id: 452, loss: 3.9080991744995117
pass_id: 1, batch_id: 453, loss: 4.143310070037842
 

应用模型

构建预测程序

定义用于预测的Program,在其中创建预测的网络结构。

In[9]
infer_prog = fluid.Program()
startup_prog = fluid.Program()
with fluid.program_guard(infer_prog, startup_prog):
    with fluid.unique_name.guard():
        inputs, loader = data_func(is_train=False)
        predict_seqs = model_func(inputs, is_train=False)
 

定义预测环境

定义您的预测环境,和训练类似,包括指定所用的设备、绑定训练使用的数据源和定义执行器。

In[10]
use_cuda = True
# 设置训练设备
places = fluid.cuda_places() if use_cuda else fluid.cpu_places()
# 设置数据源
loader.set_batch_generator(inputs_generator(batch_size,
                                            eos_id,
                                            is_train=False),
                            places=places)
# 定义执行器,加载参数并绑定Program
exe = fluid.Executor(places[0])
exe.run(startup_prog)
fluid.io.load_params(exe, model_save_dir, main_program=infer_prog)
prog = fluid.CompiledProgram(infer_prog).with_data_parallel()
 

测试

循环测试数据进行预测,生成过程对于每个测试数据都会将源语言句子和beam_size个生成句子打印输出,为打印出正确的句子还需要使用id到word映射的词典。如下:

In[  ]
# 获取 id 到 word 映射的词典
src_idx2word = paddle.dataset.wmt16.get_dict(
    "en", source_dict_size, reverse=True)
trg_idx2word = paddle.dataset.wmt16.get_dict(
    "de", target_dict_size, reverse=True)
# 循环测试数据
for data in loader():
    print("start infer data:{}".format(data))
    seq_ids = exe.run(prog, feed=data, fetch_list=[predict_seqs])[0]
    print("end infer")
    for ins_idx in range(seq_ids.shape[0]):
        print("Original sentence:")
        src_seqs = np.array(data[0]["src"])
        print(" ".join([
            src_idx2word[idx] for idx in src_seqs[ins_idx][1:]
            if idx != eos_id
        ]))
        print("Translated sentence:")
        for beam_idx in range(beam_size):
            seq = [
                trg_idx2word[idx] for idx in seq_ids[ins_idx, :, beam_idx]
                if idx != eos_id
            ]
            print(" ".join(seq).encode("utf8"))
start infer data:[{'src_sequence_length': <paddle.fluid.core_avx.LoDTensor object at 0x7f90d0de2e30>, 'src': <paddle.fluid.core_avx.LoDTensor object at 0x7f90d0de2670>}]
end infer
Original sentence:
A man in an orange hat starring at something .
Translated sentence:
b'Ein Mann in einem blauen Hemd spielt'
b'Ein Mann in einem roten Hemd spielt'
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Ein Mann und eine Frau sitzen auf einer Bank .'
Original sentence:
A Boston Terrier is running on lush green grass in front of a white fence .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf dem Boden , w\xc3\xa4hrend ein Foto in der Luft .'
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf dem Boden , w\xc3\xa4hrend ein Foto in der Hand .'
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf dem Boden , w\xc3\xa4hrend ein Foto auf der Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf dem Boden , w\xc3\xa4hrend ein Foto in der Luft zu .'
Original sentence:
A girl in karate uniform breaking a stick with a front kick .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd f\xc3\xa4hrt auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd f\xc3\xa4hrt auf einer Bank .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
Five people wearing winter jackets and helmets stand in the snow , with <unk> in the background .
Translated sentence:
b'Zwei M\xc3\xa4nner und eine Frau sitzen auf einer Stra\xc3\x9fe und schauen .'
b'Zwei M\xc3\xa4nner und eine Frau sitzen auf einer Stra\xc3\x9fe und unterhalten sich .'
b'Zwei M\xc3\xa4nner und eine Frau sitzen auf einer Stra\xc3\x9fe und unterhalten sich auf einem B\xc3\xbcrgersteig .'
b'Zwei M\xc3\xa4nner und eine Frau sitzen auf einer Stra\xc3\x9fe und unterhalten sich auf einem Tisch .'
Original sentence:
People are fixing the roof of a house .
Translated sentence:
b'Eine Gruppe von Menschen gehen auf einem Feld .'
b'Eine Gruppe von Menschen gehen auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Leuten spielt auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A man in light colored clothing photographs a group of men wearing dark suits and hats standing around a woman dressed in a <unk> gown .
Translated sentence:
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Hand .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Hand , w\xc3\xa4hrend ein Mann in der Hand .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Hand , w\xc3\xa4hrend ein Mann in der Luft .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Hand , w\xc3\xa4hrend ein Mann in der Hand und sehen .'
Original sentence:
A group of people standing in front of an igloo .
Translated sentence:
b'Eine Gruppe von Menschen gehen auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen spielt auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen gehen auf einem Feld .'
b'Eine Gruppe von Leuten spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A boy in a red uniform is attempting to avoid getting out at home plate , while the catcher in the blue uniform is attempting to catch him .
Translated sentence:
b'Ein kleiner Junge in einem roten Hemd , der ein Mann , der ein Mann in der Luft , w\xc3\xa4hrend ein Mann in der Luft , w\xc3\xa4hrend ein Mann in der Luft .'
b'Ein kleiner Junge in einem roten Hemd , der ein Mann , der ein Mann in der Luft , w\xc3\xa4hrend ein Mann in der Luft , w\xc3\xa4hrend ein Mann in der Hand .'
b'Ein kleiner Junge in einem roten Hemd , der ein Mann , der ein Mann in der Luft , w\xc3\xa4hrend ein Mann in der Luft , w\xc3\xa4hrend ein Mann in der Luft , der ein Foto zu .'
b'Ein kleiner Junge in einem roten Hemd , der ein Mann , der ein Mann in der Luft , w\xc3\xa4hrend ein Mann in der Luft , w\xc3\xa4hrend ein Mann in der Luft , der ein Foto zu sehen .'
Original sentence:
A guy works on a building .
Translated sentence:
b'Ein Mann f\xc3\xa4hrt auf dem Boden .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe .'
b'Ein Mann f\xc3\xa4hrt auf dem Wasser .'
b'Ein Mann f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
Original sentence:
A man in a vest is sitting in a chair and holding magazines .
Translated sentence:
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Ein Mann und eine Frau sitzen auf einer Bank .'
b'Ein Mann und eine Frau sitzen auf einem B\xc3\xbcrgersteig .'
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe und h\xc3\xa4lt ein Foto .'
Original sentence:
A mother and her young song enjoying a beautiful day outside .
Translated sentence:
b'Eine Gruppe von Leuten sitzt auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Leuten steht auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Leuten sitzt auf einem Tisch .'
b'Eine Gruppe von Leuten sitzt auf einem B\xc3\xbcrgersteig und schaut .'
Original sentence:
Men playing volleyball , with one player missing the ball but hands still in the air .
Translated sentence:
b'Eine Gruppe von Menschen und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Eine Gruppe von Menschen und eine Frau sitzen auf einer Stra\xc3\x9fe und schauen .'
b'Eine Gruppe von Menschen und eine Frau sitzen auf einer Stra\xc3\x9fe und schauen sich .'
b'Eine Gruppe von Menschen und eine Frau sitzen auf einer Stra\xc3\x9fe und schauen sich auf einem B\xc3\xbcrgersteig .'
Original sentence:
A woman holding a bowl of food in a kitchen .
Translated sentence:
b'Eine Frau in einem roten Oberteil spielt'
b'Eine Frau in einem roten Hemd spielt'
b'Eine Frau in einem blauen Hemd spielt'
b'Eine Frau in einem roten Hemd geht auf einem B\xc3\xbcrgersteig .'
Original sentence:
Man sitting using tool at a table in his home .
Translated sentence:
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Ein Mann und eine Frau sitzen auf einer Bank .'
b'Ein Mann und eine Frau sitzen auf einem B\xc3\xbcrgersteig .'
b'Ein Mann und eine Frau sitzen auf einem Tisch .'
Original sentence:
Three people sit in a cave .
Translated sentence:
b'Zwei Frauen sitzen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe .'
b'Zwei Frauen sitzen auf einem B\xc3\xbcrgersteig .'
b'Zwei M\xc3\xa4nner sitzen auf einem B\xc3\xbcrgersteig .'
Original sentence:
A girl in a jean dress is walking along a raised balance beam .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd spielt auf einem B\xc3\xbcrgersteig .'
b'Ein kleines M\xc3\xa4dchen in einem blauen Hemd spielt auf einem B\xc3\xbcrgersteig .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd spielt auf einem Baum .'
b'Ein kleines M\xc3\xa4dchen in einem roten Oberteil spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A blond holding hands with a guy in the sand .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd spielt'
b'Ein kleines M\xc3\xa4dchen in einem blauen Hemd spielt'
b'Ein kleines M\xc3\xa4dchen in einem roten Oberteil spielt'
b'Ein kleines M\xc3\xa4dchen in einem blauen Oberteil spielt'
Original sentence:
A woman in a gray sweater and black baseball cap is standing in line at a shop .
Translated sentence:
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd und einem blauen Oberteil .'
b'Eine Frau in einem blauen Hemd und einem schwarzen Hemd und einem blauen Oberteil .'
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd und einem blauen Hemd .'
b'Eine Frau in einem blauen Hemd und einem schwarzen Hemd und einem blauen Hemd .'
Original sentence:
The person in the striped shirt is mountain climbing .
Translated sentence:
b'Eine Frau in einem roten Hemd spielt'
b'Eine Frau in einem roten Oberteil spielt'
b'Eine Frau in einem blauen Hemd spielt'
b'Eine Frau in einem blauen Oberteil spielt'
Original sentence:
Two men pretend to be <unk> while women look on .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner sitzen auf einem B\xc3\xbcrgersteig .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe entlang .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe und unterhalten sich .'
Original sentence:
People standing outside of a building .
Translated sentence:
b'Drei Frauen sitzen auf einer Stra\xc3\x9fe .'
b'Drei Frauen stehen auf einer Stra\xc3\x9fe .'
b'Drei Frauen sitzen auf einem B\xc3\xbcrgersteig .'
b'Drei Frauen stehen auf einem B\xc3\xbcrgersteig .'
Original sentence:
A teenager plays her trumpet on the field at a game .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf dem Boden .'
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf dem Boden , w\xc3\xa4hrend ein Foto .'
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf dem Boden , w\xc3\xa4hrend ein Foto zu .'
Original sentence:
A woman does a somersault on a trampoline on the beach .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Oberteil f\xc3\xa4hrt auf dem Boden .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd f\xc3\xa4hrt auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen in einem roten Oberteil f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A man is standing by a group of video games in a bar .
Translated sentence:
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Ein Mann und eine Frau sitzen auf einer Bank .'
b'Ein Mann und eine Frau sitzen auf einem B\xc3\xbcrgersteig .'
b'Ein Mann und eine Frau stehen auf einem B\xc3\xbcrgersteig .'
Original sentence:
A woman uses a drill while another man takes her picture .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd f\xc3\xa4hrt auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd f\xc3\xa4hrt auf einer Bank .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A woman in a pink sweater and an apron , cleaning a table with a sponge .
Translated sentence:
b'Eine Frau in einem blauen Hemd und einem schwarzen Hemd und einem blauen Oberteil .'
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd und einem blauen Oberteil .'
b'Eine Frau in einem blauen Hemd und einem schwarzen Hemd und einem blauen Hemd .'
b'Eine Frau in einem blauen Hemd und einem schwarzen Hemd und einem blauen Hemd ist .'
Original sentence:
A man cutting branches of trees .
Translated sentence:
b'Ein Mann spielt'
b'Ein Mann f\xc3\xa4hrt auf dem Boden .'
b'Ein Mann f\xc3\xa4hrt auf dem Wasser .'
b'Ein Mann f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
Original sentence:
Group of Asian boys wait for meat to cook over barbecue .
Translated sentence:
b'Eine Gruppe von Menschen steht auf einer Stra\xc3\x9fe .'
b'Eine Gruppe von Menschen steht auf einer Stra\xc3\x9fe entlang .'
b'Eine Gruppe von Menschen steht auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Foto .'
b'Eine Gruppe von Menschen steht auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Foto zu .'
Original sentence:
Women , wearing traditional clothing , are <unk> native life .
Translated sentence:
b'Eine Gruppe von Leuten steht auf einer Stra\xc3\x9fe .'
b'Eine Gruppe von Leuten steht auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Leuten spielt auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Leuten steht auf einer Bank .'
Original sentence:
One man holds another man &apos;s head down and prepares to punch him in the face .
Translated sentence:
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Luft .'
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Hand .'
b'Ein Mann und eine Frau sitzen auf einer Bank , w\xc3\xa4hrend ein Mann in der Luft .'
b'Ein Mann und eine Frau sitzen auf einer Bank , w\xc3\xa4hrend ein Mann in der Hand .'
Original sentence:
Six people ride mountain bikes through a jungle environment .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner stehen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner sitzen auf einem B\xc3\xbcrgersteig .'
b'Zwei M\xc3\xa4nner stehen auf einem B\xc3\xbcrgersteig .'
Original sentence:
2 blond girls are sitting on a ledge in a crowded plaza .
Translated sentence:
b'Zwei M\xc3\xa4nner in einem roten Oberteil gehen auf einer Stra\xc3\x9fe .'
b'Drei M\xc3\xa4nner in einem roten Oberteil gehen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner in einem roten Oberteil gehen auf einem B\xc3\xbcrgersteig .'
b'Drei M\xc3\xa4nner in einem roten Oberteil gehen auf einem B\xc3\xbcrgersteig .'
Original sentence:
A child is splashing in the water
Translated sentence:
b'Ein Mann spielt'
b'Ein Mann f\xc3\xa4hrt auf dem Boden .'
b'Ein Mann f\xc3\xa4hrt auf dem Wasser .'
b'Ein Mann f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
Original sentence:
Three people sit at a picnic table outside of a building painted like a union jack .
Translated sentence:
b'Zwei M\xc3\xa4nner , die eine Frau in einem roten Oberteil , der ein Mann in der Hand .'
b'Zwei M\xc3\xa4nner , die eine Frau in einem roten Oberteil , die ein Mann in der Hand .'
b'Zwei M\xc3\xa4nner , die eine Frau in einem roten Oberteil , der ein Mann in der Luft .'
b'Zwei M\xc3\xa4nner , die eine Frau in einem roten Oberteil , der ein Mann in der N\xc3\xa4he .'
Original sentence:
3 boys are standing on a pier in their bathing suits .
Translated sentence:
b'Eine Gruppe von Menschen stehen auf einer Stra\xc3\x9fe .'
b'Eine Gruppe von Menschen gehen auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen stehen auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen stehen auf einer Stra\xc3\x9fe und schauen .'
Original sentence:
An employee is handing a woman a bag while she is browsing through fish on ice at a street market .
Translated sentence:
b'Eine junge Frau in einem roten Hemd geht auf einer Stra\xc3\x9fe .'
b'Eine junge Frau in einem roten Hemd geht auf einer Bank .'
b'Eine junge Frau in einem roten Hemd geht auf einem B\xc3\xbcrgersteig .'
b'Eine junge Frau in einem roten Hemd geht auf einer Stra\xc3\x9fe und schaut .'
Original sentence:
A pretty woman plays a <unk> .
Translated sentence:
b'Eine Frau geht auf einer Stra\xc3\x9fe .'
b'Eine Frau geht auf einer Bank .'
b'Eine Frau geht auf einem B\xc3\xbcrgersteig .'
b'Eine Frau geht auf einer Stra\xc3\x9fe'
Original sentence:
Outside a building , a uniformed security guard looks at the camera from behind a fence .
Translated sentence:
b'Ein Footballspieler in einem roten Trikot f\xc3\xa4hrt auf der Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Luft .'
b'Ein Footballspieler in einem roten Trikot f\xc3\xa4hrt auf der Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Hand .'
b'Ein Footballspieler in einem roten Trikot f\xc3\xa4hrt auf der Stra\xc3\x9fe , w\xc3\xa4hrend ein Foto auf der Stra\xc3\x9fe .'
b'Ein Footballspieler in einem roten Trikot f\xc3\xa4hrt auf der Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Luft zu .'
Original sentence:
The young lady is looking at the pizza .
Translated sentence:
b'Eine Frau geht auf einer Stra\xc3\x9fe .'
b'Eine Frau geht auf einer Bank .'
b'Eine Frau geht auf einem B\xc3\xbcrgersteig .'
b'Eine Frau geht auf dem B\xc3\xbcrgersteig .'
Original sentence:
A shirtless man in shorts is fishing while standing on some rocks .
Translated sentence:
b'Ein Mann in einem blauen Hemd spielt auf einer Stra\xc3\x9fe .'
b'Ein Mann in einem blauen Hemd spielt auf einer Bank .'
b'Ein Mann in einem roten Hemd spielt auf einer Stra\xc3\x9fe .'
b'Ein Mann in einem blauen Hemd spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A girl wearing a life vest floats in water .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd spielt'
b'Ein kleines M\xc3\xa4dchen in einem blauen Hemd spielt'
b'Ein kleines M\xc3\xa4dchen in einem roten Oberteil spielt'
b'Ein kleines M\xc3\xa4dchen in einem blauen Oberteil spielt'
Original sentence:
A man in uniform and a man in a blue shirt are standing in front of a truck .
Translated sentence:
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Stra\xc3\x9fe .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Bank .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einem B\xc3\xbcrgersteig .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einem Tisch .'
Original sentence:
People sit inside a train .
Translated sentence:
b'Drei Frauen stehen auf einer Stra\xc3\x9fe .'
b'Drei Frauen stehen auf einem Feld .'
b'Drei Frauen stehen auf einem B\xc3\xbcrgersteig .'
b'Drei Frauen stehen an einer Stra\xc3\x9fe .'
Original sentence:
A kid swings with his feet up in the air in a forest .
Translated sentence:
b'Ein kleiner Junge in einem roten Hemd f\xc3\xa4hrt auf dem Boden .'
b'Ein kleiner Junge in einem roten Hemd f\xc3\xa4hrt auf dem Wasser .'
b'Ein kleiner Junge in einem roten Hemd f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
b'Ein kleiner Junge in einem roten Hemd f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A man in a red shirt entering an establishment .
Translated sentence:
b'Ein Mann in einem blauen Hemd spielt'
b'Ein Mann in einem roten Hemd spielt'
b'Ein Mann und eine Frau sitzen auf einem B\xc3\xbcrgersteig .'
b'Ein Mann und eine Frau sitzen auf einem See .'
Original sentence:
Two men wearing swim trunks jump in the air at a moderately populated beach .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe und schauen sich auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe und schauen sich auf einem B\xc3\xbcrgersteig .'
b'Zwei Frauen sitzen auf einer Stra\xc3\x9fe und schauen sich auf einem B\xc3\xbcrgersteig .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe und schauen sich auf einem Feld .'
Original sentence:
A toddler is cooking with another person .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen spielt in der Luft .'
b'Ein kleines M\xc3\xa4dchen spielt in der Hand .'
b'Ein kleines M\xc3\xa4dchen spielt auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen spielt in der N\xc3\xa4he .'
Original sentence:
A <unk> and two children outside their home doing yard work such as using a hoe on the grass and planting a tree .
Translated sentence:
b'Eine Gruppe von Menschen , die eine Frau , die auf der Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Hand , der ein Mann in der Luft .'
b'Eine Gruppe von Menschen , die eine Frau , die auf der Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Hand , der ein Mann in der Hand .'
b'Eine Gruppe von Menschen , die eine Frau , die auf der Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Luft , der ein Mann in der Luft .'
b'Eine Gruppe von Menschen , die eine Frau , die auf der Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Luft , der ein Mann in der Hand .'
Original sentence:
A man cooking food on the stove .
Translated sentence:
b'Ein Mann f\xc3\xa4hrt auf dem Boden .'
b'Ein Mann f\xc3\xa4hrt auf einer Bank .'
b'Ein Mann f\xc3\xa4hrt auf einer Stra\xc3\x9fe .'
b'Ein Mann f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
Original sentence:
A man in jeans at the beach playing with a red ball .
Translated sentence:
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Ein Mann und eine Frau sitzen auf einer Bank .'
b'Ein Mann und eine Frau sitzen auf einem B\xc3\xbcrgersteig .'
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe und .'
Original sentence:
People walking down sidewalk next to a line of stores .
Translated sentence:
b'Eine Gruppe von Menschen stehen auf einer Stra\xc3\x9fe .'
b'Eine Gruppe von Menschen stehen auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Eine Gruppe von Menschen und eine Frau sitzen auf einem B\xc3\xbcrgersteig .'
Original sentence:
A wakeboarder performs a flip while being towed at high speed .
Translated sentence:
b'Ein kleiner Junge f\xc3\xa4hrt auf einem Motorrad auf der Stra\xc3\x9fe .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einem Motorrad auf dem Boden .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einem Motorrad auf der Stra\xc3\x9fe entlang .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einem Motorrad , w\xc3\xa4hrend ein Foto zu .'
Original sentence:
A large group of people fill a street .
Translated sentence:
b'Eine Gruppe von Menschen gehen auf einem Feld .'
b'Eine Gruppe von Menschen gehen auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Leuten spielt auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A man on a tag line going into the water .
Translated sentence:
b'Ein Mann sitzt auf einer Bank .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe .'
b'Ein Mann sitzt auf einem B\xc3\xbcrgersteig .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe und schaut .'
Original sentence:
A woman in jeans walks by a bus with an ad depicting a woman peering over her sunglasses .
Translated sentence:
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd und einem blauen Hemd und ein Mann .'
b'Eine Frau in einem blauen Hemd und einem schwarzen Hemd und einem blauen Hemd und ein Mann .'
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd und einem schwarzen Hemd und ein Mann .'
b'Eine Frau in einem blauen Hemd und einem schwarzen Hemd und einem schwarzen Hemd und ein Mann .'
Original sentence:
A man in a pink shirt is sitting in the grass and a ball is in the air .
Translated sentence:
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Stra\xc3\x9fe .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Bank .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einem B\xc3\xbcrgersteig .'
b'Ein Mann in einem roten Hemd und blauer Hose geht auf einem B\xc3\xbcrgersteig .'
Original sentence:
A car parked at the beach .
Translated sentence:
b'Eine Gruppe von Leuten spielt'
b'Eine Gruppe von Junge spielt'
b'Eine Gruppe von Leuten f\xc3\xa4hrt auf einem Feld .'
b'Eine Gruppe von Leuten f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
Original sentence:
Two men wearing black in a city
Translated sentence:
b'Zwei Frauen sitzen auf einer Stra\xc3\x9fe .'
b'Zwei Frauen sitzen auf einem B\xc3\xbcrgersteig .'
b'Zwei Frauen sitzen auf einer Bank .'
b'Zwei M\xc3\xa4nner sitzen auf einem B\xc3\xbcrgersteig .'
Original sentence:
The man in the yellow pants is raising his arms .
Translated sentence:
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Ein Mann und eine Frau sitzen auf einer Bank .'
b'Ein Mann und eine Frau sitzen auf einem B\xc3\xbcrgersteig .'
b'Ein Mann und eine Frau stehen auf einem B\xc3\xbcrgersteig .'
Original sentence:
Two men wearing hats and using walking sticks are walking near a body of water during <unk> .
Translated sentence:
b'Zwei M\xc3\xa4nner und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner und eine Frau sitzen auf einer Stra\xc3\x9fe und schauen .'
b'Zwei M\xc3\xa4nner und eine Frau sitzen auf einer Stra\xc3\x9fe und schauen sich .'
b'Zwei M\xc3\xa4nner und eine Frau sitzen auf einer Stra\xc3\x9fe und schauen sich auf einem B\xc3\xbcrgersteig .'
Original sentence:
A cheerleading team doing a routine on chairs .
Translated sentence:
b'Eine Gruppe von Leuten f\xc3\xa4hrt auf dem Boden .'
b'Eine Gruppe von Leuten f\xc3\xa4hrt auf einem Feld .'
b'Eine Gruppe von Leuten f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Leuten f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A boy is playing checkers with an adult shown off-screen while a girl looks on .
Translated sentence:
b'Ein Junge in einem roten Hemd spielt auf einer Stra\xc3\x9fe .'
b'Ein Junge in einem roten Hemd f\xc3\xa4hrt auf einer Stra\xc3\x9fe .'
b'Ein Junge in einem roten Hemd f\xc3\xa4hrt auf einer Bank .'
b'Ein Junge in einem roten Hemd f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A crowd of people out for some fun in public park .
Translated sentence:
b'Eine Gruppe von Menschen steht auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen spielt auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Leuten steht auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Leuten spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A man sits on a bench holding his dog and looking at the water .
Translated sentence:
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Ein Mann und eine Frau sitzen auf der Stra\xc3\x9fe und h\xc3\xa4lt ein Foto .'
b'Ein Mann und eine Frau sitzen auf der Stra\xc3\x9fe und h\xc3\xa4lt sich auf einer Stra\xc3\x9fe .'
b'Ein Mann und eine Frau sitzen auf der Stra\xc3\x9fe und h\xc3\xa4lt sich auf einem B\xc3\xbcrgersteig .'
start infer data:[{'src_sequence_length': <paddle.fluid.core_avx.LoDTensor object at 0x7f90d0de2bf0>, 'src': <paddle.fluid.core_avx.LoDTensor object at 0x7f90d0de2ef0>}]
end infer
Original sentence:
A boy and his younger brother playing together at the playground .
Translated sentence:
b'Ein kleiner Junge f\xc3\xa4hrt auf dem Boden , w\xc3\xa4hrend ein Mann zu .'
b'Ein kleiner Junge f\xc3\xa4hrt auf dem Boden , w\xc3\xa4hrend ein Mann in der Luft .'
b'Ein kleiner Junge f\xc3\xa4hrt auf dem Boden , w\xc3\xa4hrend ein Mann in der Hand .'
b'Ein kleiner Junge f\xc3\xa4hrt auf dem Boden , w\xc3\xa4hrend ein Mann in der Luft zu .'
Original sentence:
A woman in blue looks in a black leather bag while sitting on a bench during a sunny afternoon while people and <unk> passed behind her .
Translated sentence:
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd und einem schwarzen Hemd und einem blauen Hemd und einem blauen Hemd und ein Mann .'
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd und einem blauen Hemd und einem blauen Hemd und einem blauen Hemd und ein Mann .'
b'Eine Frau in einem blauen Hemd und einem schwarzen Hemd und einem schwarzen Hemd und einem blauen Hemd und einem blauen Hemd und ein Mann .'
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd und einem schwarzen Hemd und einem blauen Hemd und einem blauen Oberteil und ein Mann .'
Original sentence:
The brown dog is standing on the sandy beach .
Translated sentence:
b'Ein kleiner Junge f\xc3\xa4hrt auf einem Felsen .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einem Feld .'
b'Ein kleiner Junge springt auf einem B\xc3\xbcrgersteig .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A woman is sitting with a basket of cloth , surrounded by cloth .
Translated sentence:
b'Eine Frau in einem roten Hemd geht auf einer Stra\xc3\x9fe .'
b'Eine Frau in einem roten Hemd geht auf einer Bank .'
b'Eine Frau in einem roten Hemd geht auf einem B\xc3\xbcrgersteig .'
b'Eine Frau in einem roten Hemd geht auf einem Tisch .'
Original sentence:
A man is grilling out in his backyard .
Translated sentence:
b'Ein Mann f\xc3\xa4hrt auf dem Boden .'
b'Ein Mann f\xc3\xa4hrt auf einer Bank .'
b'Ein Mann f\xc3\xa4hrt auf einer Stra\xc3\x9fe .'
b'Ein Mann f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
Original sentence:
A woman sings in a club with a guitarist behind her .
Translated sentence:
b'Eine Frau in einem roten Hemd und einem blauen Hemd spielt'
b'Eine Frau in einem roten Hemd und einem blauen Oberteil spielt'
b'Eine Frau in einem roten Hemd und einem schwarzen Oberteil spielt'
b'Eine Frau in einem roten Hemd und einem roten Oberteil spielt'
Original sentence:
Guitar player performs at a nightclub red guitar .
Translated sentence:
b'Eine Frau geht auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf dem Boden .'
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A child sitting on a lawn chair looking up at the camera
Translated sentence:
b'Ein Junge in einem roten Hemd f\xc3\xa4hrt auf einer Stra\xc3\x9fe .'
b'Ein Junge in einem roten Hemd f\xc3\xa4hrt auf einer Bank .'
b'Ein Junge in einem roten Hemd f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
b'Ein Junge in einem roten Hemd spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
Two ladies and three men looking at the ocean .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe .'
b'Zwei Frauen sitzen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner sitzen auf einem B\xc3\xbcrgersteig .'
b'Zwei Frauen sitzen auf einem B\xc3\xbcrgersteig .'
Original sentence:
A female performer with a violin plays on a street while a woman with a blue guitar looks on .
Translated sentence:
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd geht auf einer Stra\xc3\x9fe .'
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd geht auf einer Bank .'
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd geht auf einem B\xc3\xbcrgersteig .'
b'Eine Frau in einem roten Hemd und einem blauen Hemd geht auf einem B\xc3\xbcrgersteig .'
Original sentence:
A young girl swimming in a pool
Translated sentence:
b'Ein kleines M\xc3\xa4dchen spielt in der Luft .'
b'Ein kleines M\xc3\xa4dchen spielt in der Hand .'
b'Ein kleines M\xc3\xa4dchen spielt auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen spielt in der N\xc3\xa4he .'
Original sentence:
Several children are outdoors getting ready to play tug-of-war .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner stehen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner sitzen auf einem B\xc3\xbcrgersteig .'
b'Zwei M\xc3\xa4nner stehen auf einem B\xc3\xbcrgersteig .'
Original sentence:
Three teenagers in a subway playing around .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner sitzen auf einem Feld .'
b'Zwei M\xc3\xa4nner sitzen auf einem B\xc3\xbcrgersteig .'
b'Zwei Frauen sitzen auf einem B\xc3\xbcrgersteig .'
Original sentence:
A brown dog walks in the grass with its tongue hanging out .
Translated sentence:
b'Ein kleiner Junge springt auf einer Bank .'
b'Ein kleiner Junge springt auf einer Stra\xc3\x9fe .'
b'Ein kleiner Junge springt auf einer Stra\xc3\x9fe und schaut .'
b'Ein kleiner Junge springt auf einer Stra\xc3\x9fe und h\xc3\xa4lt ein Foto .'
Original sentence:
People sitting in the grass outside a building , taking a break .
Translated sentence:
b'Eine Gruppe von Menschen und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Eine Gruppe von Menschen und eine Frau sitzen auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen und eine Frau stehen auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen und eine Frau sitzen auf einem Tisch .'
Original sentence:
Shirtless guy staring off in the distance while three woman are walking past a crowd sitting outside a cafe .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose spielt auf der Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose spielt auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose spielt auf einer Bank .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose spielt auf der Stra\xc3\x9fe und h\xc3\xa4lt ein Foto .'
Original sentence:
Two young boys putting fruit on the bike .
Translated sentence:
b'Zwei M\xc3\xa4nner spielen sich auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner spielen sich auf einem Feld .'
b'Zwei M\xc3\xa4nner spielen sich auf einem B\xc3\xbcrgersteig .'
b'Zwei M\xc3\xa4nner spielen sich auf einer Stra\xc3\x9fe entlang .'
Original sentence:
A man in a black t-shirt , cap and jeans is playing drums on an upside down yellow pail .
Translated sentence:
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Stra\xc3\x9fe .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Bank .'
b'Ein Mann in einem blauen Hemd und blauer Hose spielt auf einer Stra\xc3\x9fe .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Stra\xc3\x9fe und h\xc3\xa4lt ein Foto .'
Original sentence:
A young female artists paints an image of a woman on a wall .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Oberteil spielt'
b'Ein kleines M\xc3\xa4dchen in einem roten Trikot f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
b'Ein kleines M\xc3\xa4dchen in einem roten Oberteil f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
b'Ein kleines M\xc3\xa4dchen in einem roten Trikot f\xc3\xa4hrt auf einem Weg .'
Original sentence:
Two female members of team USA performing a jump high-five surrounded by two other female members .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Luft .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Hand .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Stadt .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der N\xc3\xa4he .'
Original sentence:
A man stirring a pot of liquid in this kitchen .
Translated sentence:
b'Ein Mann sitzt auf einer Bank .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe und schaut .'
b'Ein Mann sitzt auf einer Bank und schaut .'
Original sentence:
The boy is wakeboarding on the lake .
Translated sentence:
b'Ein kleiner Junge f\xc3\xa4hrt auf dem Boden .'
b'Ein kleiner Junge f\xc3\xa4hrt auf dem Wasser .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einem Feld .'
b'Ein kleiner Junge f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
Original sentence:
A man is working a hotdog stand .
Translated sentence:
b'Ein Mann spielt'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe .'
b'Ein Mann sitzt auf einer Bank .'
b'Ein Mann sitzt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A large group of people of various ages and <unk> sit outside together .
Translated sentence:
b'Eine Gruppe von Menschen steht auf einer Stra\xc3\x9fe .'
b'Eine Gruppe von Menschen und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Eine Gruppe von Menschen und eine Frau sitzen auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen und eine Frau stehen auf einem B\xc3\xbcrgersteig .'
Original sentence:
A blond-haired woman is pouring drinks at a bar .
Translated sentence:
b'Eine Frau geht auf einer Stra\xc3\x9fe .'
b'Eine Frau geht auf einer Bank .'
b'Eine Frau geht auf einem B\xc3\xbcrgersteig .'
b'Eine Frau geht auf einem Feld .'
Original sentence:
A small child wearing a blue and white t-shirt happily holding a yellow plastic alligator .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem blauen Hemd und blauer Hose spielt'
b'Ein kleines M\xc3\xa4dchen in einem blauen Hemd und blauer Hose geht auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen in einem blauen Hemd und blauer Hose geht auf einer Bank .'
b'Ein kleines M\xc3\xa4dchen in einem blauen Hemd und blauer Hose geht auf einem B\xc3\xbcrgersteig .'
Original sentence:
A woman with pink hair dressed in black talks to a man .
Translated sentence:
b'Eine Frau in einem blauen Hemd und blauer Hose spielt'
b'Eine Frau in einem roten Hemd und blauer Hose spielt'
b'Eine Frau in einem blauen Hemd und blauer Hose geht .'
b'Eine Frau in einem roten Hemd und blauer Hose geht .'
Original sentence:
The man in a Japanese cooking suit is preparing a meal for two people .
Translated sentence:
b'Ein Mann sitzt auf einer Bank , w\xc3\xa4hrend ein Mann in der Luft .'
b'Ein Mann sitzt auf einer Bank , w\xc3\xa4hrend ein Mann in der Hand .'
b'Ein Mann sitzt auf einer Bank , w\xc3\xa4hrend ein Mann in der Luft , die ein Foto .'
b'Ein Mann sitzt auf einer Bank , w\xc3\xa4hrend ein Mann in der Luft , die ein Foto zu .'
Original sentence:
A girl hops across the river , from rock to rock .
Translated sentence:
b'Ein kleiner Junge f\xc3\xa4hrt auf einer Bank .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einer Bank auf der Stra\xc3\x9fe .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einer Bank auf einer Stra\xc3\x9fe .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einer Bank auf einer Bank .'
Original sentence:
A male worker with his tool box is kneeling next to two women .
Translated sentence:
b'Ein Mann sitzt auf einer Bank .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe und schaut .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe und schaut sich .'
Original sentence:
An older man is opening his arms wide and looking perplexed .
Translated sentence:
b'Ein Mann sitzt auf einer Bank .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe und schaut .'
b'Ein Mann sitzt auf einer Bank und schaut .'
Original sentence:
A child in a white karate outfit practicing a move
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd spielt'
b'Ein kleines M\xc3\xa4dchen in einem blauen Hemd spielt'
b'Ein kleines M\xc3\xa4dchen in einem roten Oberteil spielt'
b'Ein kleines M\xc3\xa4dchen in einem gelben Hemd spielt'
Original sentence:
Three men in same colored vests are in the outdoors .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe .'
b'Zwei Frauen sitzen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner sitzen auf einem B\xc3\xbcrgersteig .'
b'Zwei Frauen sitzen auf einem B\xc3\xbcrgersteig .'
Original sentence:
A woman takes a picture of a baby wearing a pink hat while a man carries her .
Translated sentence:
b'Eine Frau in einem roten Hemd und einem blauen Hemd geht auf einer Stra\xc3\x9fe .'
b'Eine Frau in einem roten Hemd und einem blauen Hemd geht auf einer Bank .'
b'Eine Frau in einem roten Hemd und einem blauen Hemd geht auf einem B\xc3\xbcrgersteig .'
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd geht auf einem B\xc3\xbcrgersteig .'
Original sentence:
A group of mostly asian children sitting at <unk> in blue chairs .
Translated sentence:
b'Eine Gruppe von Menschen steht auf einer Stra\xc3\x9fe .'
b'Eine Gruppe von Menschen steht auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen steht auf einer Bank .'
b'Eine Gruppe von Menschen steht auf einer Stra\xc3\x9fe und schauen .'
Original sentence:
A young boy in a soccer uniform crying into his <unk> .
Translated sentence:
b'Ein kleiner Junge springt auf einer Stra\xc3\x9fe .'
b'Ein kleiner Junge springt auf einer Bank .'
b'Ein kleiner Junge springt auf einem B\xc3\xbcrgersteig .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A happy woman is preparing a <unk> at a coffee shop .
Translated sentence:
b'Eine Frau geht auf einer Stra\xc3\x9fe .'
b'Eine Frau geht auf einer Stra\xc3\x9fe entlang .'
b'Eine Frau in einem roten Oberteil spielt'
b'Eine Frau in einem roten Oberteil spielt .'
Original sentence:
A construction worker is driving heavy equipment at a work site .
Translated sentence:
b'Eine Gruppe von Leuten f\xc3\xa4hrt auf einer Stra\xc3\x9fe .'
b'Eine Gruppe von Leuten f\xc3\xa4hrt auf dem Boden .'
b'Eine Gruppe von Leuten f\xc3\xa4hrt auf einem Feld .'
b'Eine Gruppe von Leuten f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
Original sentence:
A woman runs after making a hit in women &apos;s softball , the catcher rises to her feet .
Translated sentence:
b'Eine Frau in einem roten Hemd und einem schwarzen Hemd geht auf einem B\xc3\xbcrgersteig .'
b'Eine Frau in einem roten Oberteil und einem schwarzen Hemd geht auf einem B\xc3\xbcrgersteig .'
b'Eine Frau in einem roten Hemd und einem roten Hemd geht auf einem B\xc3\xbcrgersteig .'
b'Eine Frau in einem roten Oberteil und einem roten Hemd geht auf einem B\xc3\xbcrgersteig .'
Original sentence:
A man in a work uniform passing a tool to another person .
Translated sentence:
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe .'
b'Ein Mann und eine Frau sitzen auf einer Bank .'
b'Ein Mann und eine Frau sitzen auf einem B\xc3\xbcrgersteig .'
b'Ein Mann und eine Frau sitzen auf einer Stra\xc3\x9fe und schaut .'
Original sentence:
A group of people are climbing in cold weather .
Translated sentence:
b'Eine Gruppe von Menschen gehen auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen gehen auf einem Feld .'
b'Eine Gruppe von Leuten spielt auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Menschen spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A <unk> about to descend down a mountain with a blue helmet on .
Translated sentence:
b'Ein kleiner Junge in einem roten Hemd f\xc3\xa4hrt auf dem Boden .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd f\xc3\xa4hrt auf dem Boden .'
b'Ein kleiner Junge in einem roten Hemd f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd f\xc3\xa4hrt auf dem B\xc3\xbcrgersteig .'
Original sentence:
A man doing handstand on top of a round statue .
Translated sentence:
b'Ein Mann sitzt auf einer Bank .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe .'
b'Ein Mann sitzt auf einer Stra\xc3\x9fe und schaut .'
b'Ein Mann sitzt auf einer Bank und schaut .'
Original sentence:
A child sitting at a restaurant table holding a paper mask against his face .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose spielt'
b'Ein kleines M\xc3\xa4dchen in einem blauen Hemd und blauer Hose spielt'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose geht auf einem B\xc3\xbcrgersteig .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A brown dog wades into a lake to retrieve a stick .
Translated sentence:
b'Ein kleiner Junge springt auf einer Bank .'
b'Ein kleiner Junge springt auf einer Stra\xc3\x9fe .'
b'Ein kleiner Junge springt auf einer Bank auf der Stra\xc3\x9fe .'
b'Ein kleiner Junge springt auf einer Bank auf der Stra\xc3\x9fe entlang .'
Original sentence:
A mother teaches her two young boys to fish off of a rocky coast into very blue water .
Translated sentence:
b'Eine Gruppe von Menschen steht auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Luft .'
b'Eine Gruppe von Menschen sitzt auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Luft .'
b'Eine Gruppe von Menschen steht auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Luft , die ein Foto zu .'
b'Eine Gruppe von Menschen sitzt auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Luft , die ein Foto zu .'
Original sentence:
A little kid is walking next to red banners .
Translated sentence:
b'Ein kleiner Junge spielt auf einem B\xc3\xbcrgersteig .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einem Felsen .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
b'Ein kleines M\xc3\xa4dchen f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A girl sits on a decorated bike with a younger boy while another girl takes a picture .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose spielt auf der Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose spielt auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose spielt auf einer Bank .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A black dog is retrieving a ball in water .
Translated sentence:
b'Ein kleiner Junge f\xc3\xa4hrt auf einer Stra\xc3\x9fe .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einer Bank .'
b'Ein kleiner Junge springt auf einem B\xc3\xbcrgersteig .'
b'Ein kleiner Junge f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A man in white pants and a blue shirt is kicking a yellow boxing bag .
Translated sentence:
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Stra\xc3\x9fe .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einer Bank .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einem B\xc3\xbcrgersteig .'
b'Ein Mann in einem blauen Hemd und blauer Hose geht auf einem Tisch .'
Original sentence:
Two Indian men participating in a ceremony .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe .'
b'Zwei Frauen sitzen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner sitzen auf einem B\xc3\xbcrgersteig .'
b'Zwei Frauen sitzen auf einem B\xc3\xbcrgersteig .'
Original sentence:
A boy with a <unk> nose and writing on his hands is standing in a video rental store .
Translated sentence:
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose geht auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose geht auf einer Bank .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose geht auf einem B\xc3\xbcrgersteig .'
b'Ein kleines M\xc3\xa4dchen in einem roten Hemd und blauer Hose spielt auf einem B\xc3\xbcrgersteig .'
Original sentence:
Two silhouetted people paddle a canoe on the ocean during sunset .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe und schauen sich .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Hand .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe , w\xc3\xa4hrend ein Mann in der Luft .'
Original sentence:
People are standing on a crowded subway , and the platform outside is visible through the window .
Translated sentence:
b'Zwei M\xc3\xa4nner , die eine Frau in einem roten Oberteil und eine Frau gehen .'
b'Zwei M\xc3\xa4nner , die eine Frau in einem roten Oberteil und eine Frau stehen .'
b'Zwei M\xc3\xa4nner , die eine Frau in einem roten Oberteil und eine Frau stehen auf .'
b'Zwei M\xc3\xa4nner , die eine Frau in einem roten Oberteil und eine Frau stehen auf einem B\xc3\xbcrgersteig .'
Original sentence:
Man scaling wall with fire in hand
Translated sentence:
b'Ein Mann sitzt auf einer Stra\xc3\x9fe .'
b'Ein Mann sitzt auf einer Bank .'
b'Ein Mann und eine Frau sitzen'
b'Ein Mann und eine Frau gehen .'
Original sentence:
Two brown dogs are running through the snow .
Translated sentence:
b'Zwei Zwei M\xc3\xa4nner spielen sich auf einem Feld .'
b'Zwei Zwei M\xc3\xa4dchen spielen sich auf einem Feld .'
b'Zwei Zwei M\xc3\xa4nner spielen sich auf dem Wasser .'
b'Zwei Zwei M\xc3\xa4dchen spielen sich auf dem Wasser .'
Original sentence:
On stage photo of small band performing for theater audience .
Translated sentence:
b'Eine Gruppe von Leuten steht auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Leuten spielt auf einem B\xc3\xbcrgersteig .'
b'Eine Gruppe von Leuten steht auf einem Feld .'
b'Eine Gruppe von Leuten f\xc3\xa4hrt auf einem B\xc3\xbcrgersteig .'
Original sentence:
A baby in a Christmas outfit looks at the camera .
Translated sentence:
b'Ein kleiner Junge spielt auf einer Stra\xc3\x9fe .'
b'Ein kleiner Junge spielt auf einer Bank .'
b'Ein kleines M\xc3\xa4dchen spielt auf einer Stra\xc3\x9fe .'
b'Ein kleines M\xc3\xa4dchen spielt auf einer Bank .'
Original sentence:
A man is sitting next to a computer monitor .
Translated sentence:
b'Ein Mann sitzt auf einer Stra\xc3\x9fe .'
b'Ein Mann sitzt auf einer Bank .'
b'Ein Mann sitzt auf dem Boden .'
b'Ein Mann sitzt auf einem B\xc3\xbcrgersteig .'
Original sentence:
This lady has heard a funny joke and laughing .
Translated sentence:
b'Eine Frau geht auf einer Stra\xc3\x9fe .'
b'Eine Frau sitzt auf einer Stra\xc3\x9fe .'
b'Eine Frau geht auf einer Bank .'
b'Eine Frau sitzt auf einer Bank .'
Original sentence:
People inside of a building , one is taking a photo .
Translated sentence:
b'Drei M\xc3\xa4nner in einem roten Oberteil gehen .'
b'Drei M\xc3\xa4nner in einem roten Trikot gehen .'
b'Drei M\xc3\xa4nner in einem roten Trikot spielen'
b'Zwei M\xc3\xa4nner in einem roten Trikot gehen .'
Original sentence:
Four white dogs with muzzles jump over a red wall .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe entlang .'
b'Zwei M\xc3\xa4nner sitzen auf der Stra\xc3\x9fe und schauen .'
b'Zwei M\xc3\xa4nner sitzen auf der Stra\xc3\x9fe und unterhalten sich .'
Original sentence:
The woman with the blue shirt is holding a baby .
Translated sentence:
b'Eine Frau in einem blauen Hemd und blauer Hose spielt'
b'Eine Frau in einem roten Hemd und blauer Hose spielt'
b'Eine Frau in einem blauen Hemd und blauer Hose geht .'
b'Eine Frau in einem roten Hemd und blauer Hose geht .'
Original sentence:
Two people are sitting fishing on striped beach chairs in a body of water .
Translated sentence:
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe und schauen .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe und unterhalten sich .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe und unterhalten sich auf einem B\xc3\xbcrgersteig .'
b'Zwei M\xc3\xa4nner sitzen auf einer Stra\xc3\x9fe und unterhalten sich auf einem Feld .'
start infer data:[{'src_sequence_length': <paddle.fluid.core_avx.LoDTensor object at 0x7f90d0df0c70>, 'src': <paddle.fluid.core_avx.LoDTensor object at 0x7f90d0df09b0>}]
 

可以观察到如下的预测结果输出:

Original sentence:

A man in an orange hat starring at something .

Translated score and 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 .

Ein Mann mit einem orangen Schutzhelm starrt etwas an .

 

总结

端到端的神经网络机器翻译是近几年兴起的一种全新的机器翻译方法。本章中,我们介绍了NMT中典型的“编码器-解码器”框架。由于NMT是一个典型的Seq2Seq(Sequence to Sequence,序列到序列)学习问题,因此,Seq2Seq中的query改写(query rewriting)、摘要、单轮对话等问题都可以用本教程的模型来解决。

点击链接,使用AI Studio一键上手实践项目吧:https://aistudio.baidu.com/aistudio/projectdetail/127564 

下载安装命令

## CPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle

## GPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu

>> 访问 PaddlePaddle 官网,了解更多相关内容

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部