定義編碼器(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.____)