用PaddlePaddle實現機器翻譯

背景介紹

機器翻譯(machine translation, MT)是用計算機來實現不一樣語言之間翻譯的技術。被翻譯的語言一般稱爲源語言(source language),翻譯成的結果語言稱爲目標語言(target language)。機器翻譯即實現從源語言到目標語言轉換的過程,是天然語言處理的重要研究領域之一。html

早期機器翻譯系統多爲基於規則的翻譯系統,須要由語言學家編寫兩種語言之間的轉換規則,再將這些規則錄入計算機。該方法對語言學家的要求很是高,並且咱們幾乎沒法總結一門語言會用到的全部規則,更況且兩種甚至更多的語言。所以,傳統機器翻譯方法面臨的主要挑戰是沒法獲得一個完備的規則集合[1]。git

爲解決以上問題,統計機器翻譯(Statistical Machine Translation, SMT)技術應運而生。在統計機器翻譯技術中,轉化規則是由機器自動從大規模的語料中學習獲得的,而非咱們人主動提供規則。所以,它克服了基於規則的翻譯系統所面臨的知識獲取瓶頸的問題,但仍然存在許多挑戰:1)人爲設計許多特徵(feature),但永遠沒法覆蓋全部的語言現象;2)難以利用全局的特徵;3)依賴於許多預處理環節,如詞語對齊、分詞或符號化(tokenization)、規則抽取、句法分析等,而每一個環節的錯誤會逐步累積,對翻譯的影響也愈來愈大。算法

近年來,深度學習技術的發展爲解決上述挑戰提供了新的思路。將深度學習應用於機器翻譯任務的方法大體分爲兩類:1)仍以統計機器翻譯系統爲框架,只是利用神經網絡來改進其中的關鍵模塊,如語言模型、調序模型等(見圖1的左半部分);2)再也不以統計機器翻譯系統爲框架,而是直接用神經網絡將源語言映射到目標語言,即端到端的神經網絡機器翻譯(End-to-End Neural Machine Translation, End-to-End NMT)(見圖1的右半部分),簡稱爲NMT模型。spring


圖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)算法。app

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)。注意,該網絡的前向隱層和後向隱層之間沒有鏈接。less


圖3:按時間步展開的雙向循環神經網絡

編碼器-解碼器框架

編碼器-解碼器(Encoder-Decoder)[2]框架用於解決由一個任意長度的源序列到另外一個任意長度的目標序列的變換問題。即編碼階段將整個源序列編碼成一個向量,解碼階段經過最大化預測序列機率,從中解碼出整個目標序列。編碼和解碼的過程一般都使用RNN實現。ide


圖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 官網,瞭解更多相關內容

相關文章
相關標籤/搜索