Mendefinisikan model embedding
Anda akan mendefinisikan model Keras yang:
- Menggunakan layer
Embedding - Akan dilatih dengan Teacher Forcing
Model ini akan memiliki dua layer embedding: satu layer embedding encoder dan satu layer embedding decoder. Selain itu, karena model dilatih menggunakan Teacher Forcing, model akan menggunakan panjang urutan fr_len-1 pada layer Input decoder.
Untuk latihan ini, semua keras.layers yang diperlukan dan Model sudah diimpor. Selain itu, variabel en_len (panjang urutan bahasa Inggris), fr_len (panjang urutan bahasa Prancis), en_vocab (ukuran kosakata bahasa Inggris), fr_vocab (ukuran kosakata bahasa Prancis), dan hsize (ukuran tersembunyi) telah didefinisikan.
Latihan ini adalah bagian dari kursus
Penerjemahan Mesin dengan Keras
Petunjuk latihan
- Definisikan layer
Inputyang menerima urutan ID kata. - Definisikan layer
Embeddingyang melakukan embeddingen_vocabkata, memiliki panjang 96, dan dapat menerima urutan ID (panjang urutan ditentukan menggunakan argumeninput_length). - Definisikan layer
Embeddingyang melakukan embeddingfr_vocabkata, memiliki panjang 96, dan dapat menerima urutanfr_len-1ID. - Definisikan model yang menerima satu masukan dari encoder dan satu masukan dari decoder (dalam urutan tersebut) dan menghasilkan prediksi kata.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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'])