開始使用免費開始

訓練模型

在這個練習中,你會訓練先前實作的模型。你知道嗎?Google 的編碼器-解碼器式機器翻譯模型需要訓練 2–4 天。

在本練習中,你會使用 1,500 句的較小資料集(也就是 en_textfr_text)來訓練模型。這樣的量很難得到理想效能,不過方法是一樣的;只是需要在更多資料上、訓練更久。你也已經拿到模型 nmt,以及你先前實作的 sents2seqs() 函式。為了得到更好的效能,你會將編碼器的文字反轉。這裡,en_x 代表編碼器輸入,de_x 代表解碼器輸入。

本練習屬於課程

使用 Keras 進行機器翻譯

檢視課程

練習說明

  • 使用 sents2seqs() 取得一個批次的編碼器輸入(英語句子,索引從 ii+bsize)。輸入需要先反轉並做 onehot 編碼。
  • 使用 sents2seqs() 取得一個批次的解碼器輸出(法語句子,索引從 ii+bsize)。輸入需要做 onehot 編碼。
  • 以包含 en_xde_y 的單一批次資料來訓練模型。
  • bsize 作為 batch_size,評估模型以取得 en_xde_y 的評估指標。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

n_epochs, bsize = 3, 250

for ei in range(n_epochs):
  for i in range(0,data_size,bsize):
    # Get a single batch of encoder inputs
    en_x = ____('source', ____, onehot=____, reverse=____)
    # Get a single batch of decoder outputs
    de_y = sents2seqs('target', fr_text[____], onehot=____)
    
    # Train the model on a single batch of data
    nmt.____(____, ____)    
    # Obtain the eval metrics for the training data
    res = nmt.____(____, de_y, batch_size=____, verbose=0)
    print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))  
編輯並執行程式碼