始める無料で始める

Teacher Forcing 用モデルレイヤーの定義

先ほど定義した機械翻訳モデルを、さらに良くした新バージョンを作成します。Google の翻訳モデルのようなものも、この Teacher Forcing 手法で学習させていたことはご存知でしたか?

すでに見たとおり、Teacher Forcing を採用するには前のモデルに少し手を入れる必要があります。この演習では、必要な変更を加えていきます。言語パラメータとして、en_lenfr_len(英語/フランス語のパディング済み文の長さ)、en_vocabfr_vocab(英語/フランス語データセットの語彙サイズ)、そして hsize(GRU レイヤーの隠れ層サイズ)が与えられています。デコーダーは fr_len より 1 つ短い長さのフランス語シーケンスを受け取る点に注意してください。エンコーダー関連には接頭辞 en、デコーダー関連には de を使うことも覚えておきましょう。

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

Kerasで学ぶMachine Translation

コースを見る

演習の手順

  • tensorflow.keras から layers サブモジュールをインポートします。
  • エンコーダーの出力と状態を取得し、それぞれ en_outen_state に代入します。
  • fr_len-1 の長さを持つ one-hot エンコード済みフランス語単語列を受け付けるデコーダーの Input レイヤーを定義します。
  • fr_vocab 個のノードを持つ、TimeDistributedDense の softmax レイヤーを定義します。

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

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

# Import the layers submodule from keras
import ____.____.____ as layers

en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)

# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)
コードを編集して実行