การกำหนดโมเดล Embedding
ในแบบฝึกหัดนี้ คุณจะกำหนดโมเดล Keras ที่:
- ใช้เลเยอร์
Embedding - ฝึกด้วย Teacher Forcing
โมเดลนี้จะมีเลเยอร์ embedding สองชั้น ได้แก่ เลเยอร์ embedding ของ encoder และของ decoder นอกจากนี้ เนื่องจากโมเดลใช้ Teacher Forcing ในการฝึก เลเยอร์ Input ของ decoder จึงใช้ความยาวลำดับเป็น fr_len-1
สำหรับแบบฝึกหัดนี้ ได้นำเข้า keras.layers และ Model ที่จำเป็นทั้งหมดไว้แล้ว รวมถึงตัวแปร en_len (ความยาวลำดับภาษาอังกฤษ), fr_len (ความยาวลำดับภาษาฝรั่งเศส), en_vocab (ขนาดคำศัพท์ภาษาอังกฤษ), fr_vocab (ขนาดคำศัพท์ภาษาฝรั่งเศส) และ hsize (ขนาด hidden state) ก็ถูกกำหนดไว้แล้วเช่นกัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Translation ด้วย Keras
คำแนะนำการฝึกหัด
- กำหนดเลเยอร์
Inputที่รับลำดับของ word ID - กำหนดเลเยอร์
Embeddingสำหรับแปลงคำในen_vocabโดยมีความยาว 96 และรับลำดับของ ID ได้ (กำหนดความยาวลำดับผ่านอาร์กิวเมนต์input_length) - กำหนดเลเยอร์
Embeddingสำหรับแปลงคำในfr_vocabโดยมีความยาว 96 และรับลำดับของ ID จำนวนfr_len-1ได้ - กำหนดโมเดลที่รับอินพุตจาก encoder และอินพุตจาก decoder (ตามลำดับนั้น) และส่งออกการทำนายคำ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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'])