開始使用免費開始

定義編碼器(encoder)

在這裡,你將踏出打造機器翻譯模型的第一步:實作編碼器(encoder)。你將實作的編碼器相當簡單,與實務上如 Google 翻譯等服務所使用的複雜模型相比更為精簡。不過別擔心,雖然模型簡單,但其核心觀念與那些複雜模型是一樣的。接下來我們會用字首 en(例如 en_gru)來表示與編碼器相關的部分,用 de 來表示解碼器(decoder)相關的部分(例如 de_gru)。

你會看到我們把 en_vocab 設為較小的 150,而不是實際找到的 228。縮小詞彙表可以降低模型的記憶體使用量。略微縮小詞彙表是可以的,因為我們移除的是最少見的字。在機器翻譯任務中,罕見字通常比常見字的影響小。

本練習屬於課程

使用 Keras 進行機器翻譯

檢視課程

練習說明

  • 使用 shape 參數,為一個具有詞彙表大小 en_vocab、序列長度 en_len 的輸入定義 Input 層。
  • 定義一個具有 hsize 隱藏單元並回傳其狀態的 keras.layers.GRU 層。
  • en_inputs 餵入該 GRU 層以取得輸出,並將 GRU 的狀態指定給 en_state,輸出指定給 en_out
  • 定義一個 keras.models.Model,其輸入為 en_inputs,輸出為 en_state,並列印模型摘要。

動手互動練習

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

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.____)
編輯並執行程式碼