開始使用免費開始

定義解碼器(decoder)

在這個練習中,你將實作解碼器,並定義一個從編碼器輸入到解碼器 GRU 輸出的端到端模型。解碼器與編碼器使用相同的模型結構,但在輸入與狀態的提供方式上有所不同。舉例來說,解碼器會同時使用編碼器產生的語境向量(context vector)作為輸入,以及作為解碼器的初始狀態。請記得,我們會用前綴 en(例如 en_gru)代表與編碼器相關的物件,用 de 代表與解碼器相關的物件(例如 de_gru)。

為了實作解碼器,你將使用 RepeatVectorGRU 層。

本練習已提供你先前實作好的編碼器模型與各個層。例如,編碼器的輸入為 en_inputs,語境向量為 en_state。另外請注意,GRUModel 物件已經匯入可用。

本練習屬於課程

使用 Keras 進行機器翻譯

檢視課程

練習說明

  • 定義一個 RepeatVector 層,將 en_state 作為輸入,並將其重複 fr_len 次。
  • 定義一個名為 decoder_gru 的 GRU 層,其隱藏單元數為 hsize,並回傳所有產生的輸出。
  • 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()
編輯並執行程式碼