開始使用免費開始

加入驗證的模型訓練

在這裡你會學到如何在包含驗證步驟的情況下訓練神經機器翻譯模型。

我們已提供你在上一章建立的 nmt 模型。此外,你將使用從 Udacity Github Repo 取得的英文與法文句子來訓練模型。你已從前一個練習取得訓練用英文文字(tr_en)與法文文字(tf_fr),以及驗證用英文文字(v_en)與法文文字(v_fr)。

訓練模型需要一些時間,所以你的程式碼執行會稍微久一點。

本練習屬於課程

使用 Keras 進行機器翻譯

檢視課程

練習說明

  • 使用 sents2seqs 函式將 v_env_fr 轉換為驗證資料。
  • 使用 sents2seqs 函式取得正確轉換後的一批輸入與輸出。
  • 使用輸入(en_x)與輸出(de_y)在單一批次上訓練 nmt
  • 使用 v_en_xv_de_y,並將 valid_size 作為 batch_size,評估 nmt 模型並取得驗證準確率。

動手互動練習

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

# Convert validation data to onehot
v_en_x = ____(____, ____, onehot=____, reverse=____)
v_de_y = ____(____, ____, onehot=True)

n_epochs, bsize = 3, 250
for ei in range(n_epochs):
  for i in range(0,train_size,bsize):
    # Get a single batch of inputs and outputs
    en_x = ____(____, tr_en[____:____], onehot=____, reverse=____)
    de_y = sents2seqs(____, tr_fr[____:____], onehot=True)
    # Train the model on a single batch of data
    nmt.____(____, ____)    
  # Evaluate the trained model on the validation data
  res = nmt.evaluate(____, ____, batch_size=valid_size, verbose=0)
  print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))
編輯並執行程式碼