始める無料で始める

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

ここでは Teacher Forcing を用いてモデルを学習し、あわせて検証ステップも実行します。複数のエポックと反復で学習を行い、各エポックの最後に検証を実行して結果を取得します。

このために、en_text(英語の文)、fr_text(フランス語の文)、sents2seqs() 関数、nmt_tf(コンパイル済みモデル)が用意されています。さらに、tr_entr_fr(学習データ)、v_env_fr(検証データ)もすでに読み込まれています。

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

Kerasで学ぶMachine Translation

コースを見る

演習の手順

  • de_xy から、デコーダ入力(最後の単語を除くすべて)とデコーダ出力(最初の単語を除くすべて)を抽出します。
  • 単一バッチのデータでモデルを学習します。
  • 学習データと同様の方法で、検証データからデコーダ入力と出力を作成します。
  • 検証データセットでモデルを評価し、検証損失と精度を取得します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

for ei in range(n_epochs):
  for i in range(0,train_size,bsize):    
    en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=True, reverse=True)
    de_xy = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
    # Create a single batch of decoder inputs and outputs
    de_x, de_y = ____[:,____,:], de_xy[:,____,:]
    # Train the model on a single batch of data
    nmt_tf.____([____,____], de_y)      
  v_en_x = sents2seqs('source', v_en, onehot=True, reverse=True)
  # Create a single batch of validation decoder inputs and outputs
  v_de_xy = ____('target', ____, onehot=____)
  v_de_x, v_de_y = ____[____], v_de_xy[____]
  # Evaluate the trained model on the validation data
  res = nmt_tf.evaluate([____,____], ____, batch_size=valid_size, verbose=0)
  print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))
コードを編集して実行