デコーダーの定義
この演習では、デコーダーを実装し、エンコーダーの入力からデコーダーの GRU 出力までをつなぐエンドツーエンドのモデルを定義します。デコーダーはエンコーダーと同じモデル構成を使いますが、エンコーダーに与える入力や状態とは異なる点があります。たとえば、デコーダーはエンコーダーが生成したコンテキストベクトルを、入力としてもデコーダーの初期状態としても利用します。エンコーダーに関するものは接頭辞 en(例: en_gru)、デコーダーに関するものは de(例: de_gru)を付けることを思い出してください。
デコーダーの実装には RepeatVector と GRU レイヤーを使います。
この演習では、すでに実装済みのエンコーダーモデルと各種レイヤーが用意されています。たとえば、エンコーダーの入力は en_inputs、コンテキストベクトルは en_state として与えられています。また、GRU と Model オブジェクトはすでにインポート済みです。
この演習はコースの一部です
Kerasで学ぶMachine Translation
演習の手順
en_stateを入力として受け取り、それをfr_len回繰り返すRepeatVectorレイヤーを定義します。- 隠れユニット数を
hsizeに設定し、生成されたすべての出力を返す GRU レイヤーdecoder_gruを定義します。 de_inputsを入力として与え、デコーダーの初期状態にen_stateを設定して、decoder_gruレイヤーの出力を取得します。en_inputsを入力、gru_outputsを出力とするモデルを定義します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
from tensorflow.keras.layers import RepeatVector
hsize = 48
fr_len = 20
# Define a RepeatVector layer
de_inputs = ____(____)(____)
# Define a GRU model that returns all outputs
decoder_gru = ____(____, ____=____)
# Get the outputs of the decoder
gru_outputs = ____(____, initial_state=____)
# Define a model with the correct inputs and outputs
enc_dec = ____(inputs=____, outputs=____)
enc_dec.summary()