Mendefinisikan decoder untuk model inferensi
Model inferensi adalah model yang akan digunakan di lingkungan produksi untuk melakukan penerjemahan ketika diminta oleh pengguna. Pada latihan ini, Anda perlu mengimplementasikan decoder dari model inferensi.
Decoder model inferensi berbeda dengan decoder pada model pelatihan. Kita tidak dapat memberi makan decoder dengan kata-kata bahasa Prancis karena itulah yang ingin kita prediksi. Untungnya, ada solusinya. Kita dapat menggunakan kata bahasa Prancis yang diprediksi pada langkah waktu sebelumnya untuk memberi masukan ke decoder model inferensi. Oleh karena itu, ketika Anda ingin menghasilkan terjemahan, decoder perlu menghasilkan satu kata setiap kali, sambil menggunakan keluaran sebelumnya sebagai masukan.
Untuk latihan ini, variabel hsize (ukuran tersembunyi dari lapisan GRU), fr_len, dan fr_vocab telah diimpor. Ingat bahwa prefiks de digunakan untuk merujuk pada decoder.
Latihan ini adalah bagian dari kursus
Penerjemahan Mesin dengan Keras
Petunjuk latihan
- Definisikan sebuah lapisan
Inputyang menerima satu batch deret kata bahasa Prancis yang di-onehot (panjang urutan 1). - Definisikan lapisan
Inputlain yang menerima satu batch state berukuranhsize, yang akan Anda gunakan untuk memasukkan state sebelumnya ke decoder. - Dapatkan output dan state dari
GRUdecoder. - Definisikan sebuah model yang menerima
Inputkata bahasa Prancis danInputstate sebelumnya serta menghasilkan prediksi akhir dan stateGRUyang baru.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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())