エンコーダの定義
ここでは、機械翻訳モデルを作る最初の一歩として、エンコーダを実装します。これから実装するエンコーダは、Google の機械翻訳サービスのような実運用の複雑なモデルに比べるととてもシンプルです。ただしご安心ください。モデル自体は簡単でも、基礎となる考え方は複雑なモデルと同じです。本コースでは、エンコーダに関するものを示す接頭辞として en(例: en_gru)、デコーダに関するものを示す接頭辞として de(例: de_gru)を使います。
ここでは、実際に得られた値(228)より小さい 150 を en_vocab に設定しています。語彙数を小さくすると、モデルのメモリ使用量を抑えられます。まれな単語を削るだけなので、語彙を少し減らすのは問題ありません。機械翻訳のタスクでは、一般的に、まれな単語はよく使われる単語ほど重要ではないからです。
この演習はコースの一部です
Kerasで学ぶMachine Translation
演習の手順
- 語彙サイズ
en_vocab、系列長en_lenをもつ入力に対して、shape引数を使ってInputレイヤーを定義してください。 - 隠れユニット数が
hsizeで、状態を返すkeras.layers.GRUレイヤーを定義してください。 en_inputsを GRU レイヤーに渡して出力を取得し、GRU の状態をen_stateに、出力をen_outに代入してください。- 入力を
en_inputs、出力をen_stateとするkeras.models.Modelを定義し、モデルのサマリーを出力してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
import tensorflow.keras as keras
en_len = 15
en_vocab = 150
hsize = 48
# Define an input layer
en_inputs = keras.layers.____(____=____)
# Define a GRU layer which returns the state
en_gru = ____(____, ____=____)
# Get the output and state from the GRU
____, ____ = ____(____)
# Define and print the model summary
encoder = ____(inputs=____, ____=____)
print(encoder.____)