เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การกำหนดเลเยอร์ของโมเดล Teacher Forcing

ในแบบฝึกหัดนี้ เราจะกำหนดโมเดลการแปลภาษาเวอร์ชันใหม่ที่ดียิ่งขึ้น ทราบไหมว่าโมเดลอย่าง Google Machine Translator ก็ใช้เทคนิค Teacher Forcing นี้ในการเทรนโมเดลด้วย

อย่างที่ได้เห็นไปแล้ว โมเดลก่อนหน้าของเราต้องปรับเปลี่ยนเล็กน้อยเพื่อรองรับ Teacher Forcing ในแบบฝึกหัดนี้ เราจะทำการเปลี่ยนแปลงที่จำเป็นจากโมเดลเดิม โดยมีพารามิเตอร์ของภาษาที่เตรียมไว้ให้แล้ว ได้แก่ en_len และ fr_len (ความยาวของประโยคภาษาอังกฤษ/ฝรั่งเศสหลังการ padding), en_vocab และ fr_vocab (ขนาด Vocabulary ของชุดข้อมูลภาษาอังกฤษ/ฝรั่งเศส) และ hsize (ขนาดของ hidden layer ในเลเยอร์ GRU) โปรดจำไว้ว่า Decoder จะรับลำดับภาษาฝรั่งเศสที่มีจำนวนสมาชิกน้อยกว่า fr_len อยู่หนึ่งตัว และเราใช้คำนำหน้า en สำหรับสิ่งที่เกี่ยวกับ Encoder และ de สำหรับสิ่งที่เกี่ยวกับ Decoder

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Machine Translation ด้วย Keras

ดูคอร์ส

คำแนะนำการฝึกหัด

  • นำเข้า submodule layers จาก tensorflow.keras
  • ดึงค่า output และ state ของ Encoder แล้วกำหนดให้กับ en_out และ en_state ตามลำดับ
  • กำหนดเลเยอร์ Input ของ Decoder ให้รับลำดับที่มีความยาว fr_len-1 ซึ่งประกอบด้วยคำภาษาฝรั่งเศสในรูปแบบ onehot encoding
  • กำหนดเลเยอร์ Dense แบบ softmax ที่ครอบด้วย TimeDistributed โดยมี fr_vocab โหนด

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Import the layers submodule from keras
import ____.____.____ as layers

en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)

# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)
แก้ไขและรันโค้ด