Визначення декодера інференс‑моделі
Інференс‑модель — це модель, яку буде використано „в полі" для виконання перекладів на запит користувача. У цій вправі вам потрібно реалізувати декодер інференс‑моделі.
Декодер інференс‑моделі відрізняється від декодера тренувальної моделі. Ми не можемо подавати до декодера французькі слова, адже саме їх потрібно передбачити. На щастя, є розв'язання. Ми можемо використовувати передбачене французьке слово з попереднього кроку часу, щоб подати його на вхід декодеру інференс‑моделі. Тому, коли ви генеруєте переклад, декодер має створювати по одному слову за раз, використовуючи попередній вихід як вхід.
Для цієї вправи змінні hsize (розмір прихованого стану шару GRU), fr_len та fr_vocab уже імпортовано. Пам'ятайте, що префікс de використовується для позначення декодера.
Ця вправа є частиною курсу
Machine Translation з Keras
Інструкції до вправи
- Визначте шар
Input, який приймає пакет onehot‑кодованих послідовностей французьких слів (довжина послідовності 1). - Визначте ще один шар
Input, який приймає пакет станів розміруhsize, щоб ви могли подати попередній стан до декодера. - Отримайте вихід і стан шару
GRUдекодера. - Визначте модель, яка приймає
Inputфранцузьких слів іInputпопереднього стану та повертає кінцевий прогноз і новий станGRU.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
# Define an input layer that accepts a single onehot encoded word
de_inputs = layers.____(shape=(____, ____))
# Define an input to accept the t-1 state
de_state_in = layers.____(shape=(____,))
de_gru = layers.GRU(hsize, return_state=True)
# Get the output and state from the GRU layer
de_out, de_state_out = ____(de_inputs, initial_state=____)
de_dense = layers.Dense(fr_vocab, activation='softmax')
de_pred = de_dense(de_out)
# Define a model
decoder = Model(inputs=[____, ____], outputs=[____, ____])
print(decoder.summary())