ส่วนที่ 1: ลุ้นรับรางวัลสุดพิเศษ
ในแบบฝึกหัดนี้ คุณจะได้เรียนรู้เกี่ยวกับ Dense layer ผ่านโจทย์สนุก ๆ ลองจินตนาการว่ามีรายการเกมโชว์ที่ใช้โครงข่ายประสาทเทียมในการตัดสินรางวัล ผู้เข้าแข่งขันต้องป้อนข้อมูล ได้แก่
- จำนวนพี่น้อง
- จำนวนแก้วกาแฟที่ดื่มในวันนั้น
- ชอบมะเขือเทศหรือไม่
จากนั้นโมเดลจะพยากรณ์ว่าผู้เข้าแข่งขันจะได้รับรางวัลอะไร
ในการสร้างโมเดลนี้ คุณจะใช้ Keras โดยต้องสร้างโมเดลที่มี input layer รับข้อมูล 3 ฟีเจอร์ (จำนวนพี่น้องเป็นจำนวนเต็ม จำนวนแก้วกาแฟเป็นจำนวนเต็ม และความชอบมะเขือเทศเป็น 0 หรือ 1) จากนั้นข้อมูลจะผ่าน Dense layer ที่ให้ผลลัพธ์เป็นความน่าจะเป็น 3 ค่า (ได้แก่ ความน่าจะเป็นของการได้รถยนต์ บัตรของขวัญ หรือไม่ได้รับรางวัล)
Input และ Dense layer รวมถึงออบเจกต์ Model จาก Keras ถูกนำเข้าไว้แล้ว และมีตัวกำหนดค่าเริ่มต้นชื่อ init สำหรับ Dense layer ให้พร้อมใช้งาน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Translation ด้วย Keras
คำแนะนำการฝึกหัด
- กำหนด input layer ที่รับผู้เข้าแข่งขันได้ เพียง 3 คน (batch size) โดยแต่ละคนมีข้อมูล 3 ค่า ได้แก่ จำนวนพี่น้อง จำนวนแก้วกาแฟ และความชอบมะเขือเทศ (input size)
- กำหนด
Denselayer ที่มี 3 outputs ใช้ activation แบบsoftmaxและinitเป็น initializer - คำนวณผลการพยากรณ์ของโมเดลสำหรับ
xโดยใช้โมเดลที่กำหนดไว้ - ดึงรางวัลที่มีความน่าจะเป็นสูงสุด (เป็นจำนวนเต็ม) สำหรับผู้เข้าแข่งขันแต่ละคน
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define an input layer with batch size 3 and input size 3
inp = Input(____=(____,____))
# Get the output of the 3 node Dense layer
pred = ____(____, ____=____, kernel_initializer=init, bias_initializer=init)(inp)
model = Model(inputs=inp, outputs=pred)
names = ["Mark", "John", "Kelly"]
prizes = ["Gift voucher", "Car", "Nothing"]
x = np.array([[5, 0, 1], [0, 3, 1], [2, 2, 1]])
# Compute the model prediction for x
y = ____.____(____)
# Get the most probable class for each sample
classes = np.____(____, ____)
print("\n".join(["{} has probabilities {} and wins {}".format(n,p,prizes[c]) \
for n,p,c in zip(names, y, classes)]))