การกำหนด decoder ของโมเดล inference
โมเดล inference คือโมเดลที่จะนำไปใช้จริงเพื่อแปลภาษาตามที่ผู้ใช้ต้องการ ในแบบฝึกหัดนี้ คุณจะต้องสร้าง decoder ของโมเดล inference
Decoder ของโมเดล inference แตกต่างจาก decoder ของโมเดลสำหรับการฝึก เนื่องจากเราไม่สามารถป้อนคำภาษาฝรั่งเศสให้กับ decoder ได้โดยตรง เพราะนั่นคือสิ่งที่เราต้องการให้โมเดลทำนาย โชคดีที่มีวิธีแก้ไข นั่นคือการนำคำภาษาฝรั่งเศสที่โมเดลทำนายได้จาก time step ก่อนหน้ามาป้อนเข้า decoder ของโมเดล inference ดังนั้น เมื่อต้องการสร้างคำแปล decoder จะต้องสร้างคำทีละคำ โดยใช้ผลลัพธ์จาก time step ก่อนหน้าเป็น input
สำหรับแบบฝึกหัดนี้ ตัวแปร hsize (hidden size ของ layer GRU), fr_len และ fr_vocab ได้ถูก import ไว้แล้ว และจำไว้ว่า prefix de ใช้สำหรับอ้างอิงถึง decoder
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Translation ด้วย Keras
คำแนะนำการฝึกหัด
- กำหนด
Inputlayer สำหรับรับชุดลำดับคำภาษาฝรั่งเศสในรูปแบบ onehot encoded (ความยาวลำดับเท่ากับ 1) - กำหนด
Inputlayer อีกตัวสำหรับรับ state ขนาดhsizeซึ่งจะใช้ป้อน state จาก time step ก่อนหน้าให้กับ decoder - ดึง output และ state จาก decoder
GRU - กำหนดโมเดลที่รับ
Inputของคำภาษาฝรั่งเศสและInputของ state ก่อนหน้า แล้ว output ผลการทำนายสุดท้ายและ state ใหม่ของGRU
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
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())