開始使用免費開始

定義嵌入式模型

你將定義一個 Keras 模型,該模型:

  • 使用 Embedding
  • 會以 Teacher Forcing 方式訓練

這個模型會有兩個嵌入層:一個編碼器的嵌入層,以及一個解碼器的嵌入層。除此之外,因為模型是使用 Teacher Forcing 來訓練,所以在解碼器的 Input 層會使用長度為 fr_len-1 的序列。

在本練習中,你已匯入所有需要的 keras.layersModel。此外,變數 en_len(英文序列長度)、fr_len(法文序列長度)、en_vocab(英文詞彙量)、fr_vocab(法文詞彙量)以及 hsize(隱藏層大小)都已經定義好。

本練習屬於課程

使用 Keras 進行機器翻譯

檢視課程

練習說明

  • 定義一個可接受單字 ID 序列的 Input 層。
  • 定義一個 Embedding 層,可嵌入 en_vocab 個單字,嵌入向量長度為 96,並可接受一組 ID 序列(使用 input_length 參數指定序列長度)。
  • 定義一個 Embedding 層,可嵌入 fr_vocab 個單字,嵌入向量長度為 96,並可接受長度為 fr_len-1 的 ID 序列。
  • 定義一個模型,依序從編碼器與解碼器取得輸入(順序為先編碼器、再解碼器),並輸出單字預測結果。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Define an input layer which accepts a sequence of word IDs
en_inputs = Input(____=(____,))
# Define an Embedding layer which accepts en_inputs
en_emb = ____(____, ____, input_length=____)(en_inputs)
en_out, en_state = GRU(hsize, return_state=True)(en_emb)

de_inputs = Input(shape=(fr_len-1,))
# Define an Embedding layer which accepts de_inputs
de_emb = Embedding(____, 96, input_length=____)(____)
de_out, _ = GRU(hsize, return_sequences=True, return_state=True)(de_emb, initial_state=en_state)
de_pred = TimeDistributed(Dense(fr_vocab, activation='softmax'))(de_out)

# Define the Model which accepts encoder/decoder inputs and outputs predictions 
nmt_emb = Model([____, ____], ____)
nmt_emb.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
編輯並執行程式碼