การกำหนด Encoder
ในแบบฝึกหัดนี้ คุณจะก้าวแรกสู่การสร้างโมเดลแปลภาษา นั่นคือการ implement encoder โดย encoder ที่จะสร้างนั้นเป็นโมเดลที่เรียบง่ายมากเมื่อเทียบกับโมเดลซับซ้อนที่ใช้งานจริงอย่าง Google Translate แต่ไม่ต้องกังวล แม้โมเดลจะเรียบง่าย แนวคิดพื้นฐานก็เหมือนกับโมเดลที่ซับซ้อนเหล่านั้น เราจะใช้คำนำหน้า en (เช่น en_gru) เพื่อระบุสิ่งที่เกี่ยวข้องกับ encoder และ de สำหรับสิ่งที่เกี่ยวข้องกับ decoder (เช่น de_gru)
จะสังเกตได้ว่าเราเลือกให้ en_vocab มีค่า 150 ซึ่งเล็กกว่าค่าจริง 228 ที่พบ การลดขนาด vocabulary ช่วยลดการใช้หน่วยความจำของโมเดล การลดขนาดเล็กน้อยนี้ถือว่าไม่เป็นปัญหา เพราะเราตัดเฉพาะคำที่พบน้อยที่สุดออกไป สำหรับงานแปลภาษา คำที่ใช้น้อยมักมีคุณค่าต่ำกว่าคำที่ใช้บ่อย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Translation ด้วย Keras
คำแนะนำการฝึกหัด
- กำหนด layer
Inputสำหรับ input ที่มีขนาด vocabulary เท่ากับen_vocabและความยาว sequence เท่ากับen_lenโดยใช้ argumentshape - กำหนด layer
keras.layers.GRUที่มี hidden units จำนวนhsizeและให้คืนค่า state ด้วย - รับ output จาก layer GRU โดยส่ง
en_inputsเข้าไป แล้วกำหนด GRU state ให้กับen_stateและ output ให้กับen_out - กำหนด
keras.models.Modelที่รับen_inputsเป็น input และส่งคืนen_stateเป็น output จากนั้นแสดง model summary
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
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.____)