始める無料で始める

検証付きでモデルを学習する

ここでは、検証ステップを含めてニューラル機械翻訳モデルを学習する方法を学びます。

前の章で作成したnmtモデルが用意されています。さらに、Udacity Github Repoから取得した英語とフランス語の文でモデルを学習します。前の演習で用意された学習用の英語テキスト(tr_en)とフランス語テキスト(tf_fr)、および検証用の英語テキスト(v_en)とフランス語テキスト(v_fr)が与えられています。

モデルの学習には少し時間がかかるため、コードの実行もやや長くなります。

この演習はコースの一部です

Kerasで学ぶMachine Translation

コースを見る

演習の手順

  • sents2seqs関数を使って、v_env_frを変換し、検証データを作成します。
  • sents2seqs関数を用いて、正しく前処理された入力と出力のバッチを取得します。
  • 入力(en_x)と出力(de_y)を使って、単一バッチでnmtを学習させます。
  • v_en_xv_de_y、さらにvalid_sizebatch_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))
コードを編集して実行