การตรวจจับ Overfitting
ในแบบฝึกหัดนี้ เราจะทำงานกับข้อมูลชุดย่อยขนาดเล็กจาก dataset ตัวอักษรภาษามืออักษรต้นฉบับ การใช้ข้อมูลตัวอย่างจำนวนน้อยร่วมกับโมเดลที่มีพารามิเตอร์มาก มักนำไปสู่การเกิด overfitting ซึ่งหมายความว่าโมเดลจะจดจำ class ของแต่ละตัวอย่างโดยตรง แทนที่จะเรียนรู้ฟีเจอร์ที่สามารถนำไปใช้กับตัวอย่างอื่นได้อย่างกว้างขวาง
เราจะตรวจจับ overfitting โดยดูว่า loss ของชุดข้อมูล validation สูงกว่า loss ของชุดข้อมูล training อย่างมีนัยสำคัญหรือไม่ และเพิ่มขึ้นเมื่อฝึกต่อไปหรือเปล่า เมื่อใช้ข้อมูลตัวอย่างน้อยและ learning rate สูง โมเดลจะลำบากในการหาค่าที่เหมาะสม ดังนั้นเราจะกำหนด learning rate ต่ำให้กับ optimizer เพื่อให้สังเกตเห็น overfitting ได้ง่ายขึ้น
โปรดทราบว่า keras ถูก import มาจาก tensorflow แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
TensorFlow เบื้องต้นใน Python
คำแนะนำการฝึกหัด
- กำหนด sequential model ใน
kerasชื่อว่าmodel - เพิ่ม dense layer แรกที่มี 1024 nodes, activation แบบ
reluและ input shape เป็น (784,) - กำหนด learning rate เป็น 0.001
- ตั้งค่าการทำงานของ
fit()ให้วนซ้ำผ่านข้อมูลทั้งหมด 50 รอบ และใช้ข้อมูล 50% สำหรับการ validation
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define sequential model
____
# Define the first layer
____
# Add activation function to classifier
model.add(keras.layers.Dense(4, activation='softmax'))
# Finish the model compilation
model.compile(optimizer=keras.optimizers.Adam(lr=____),
loss='categorical_crossentropy', metrics=['accuracy'])
# Complete the model fit operation
model.fit(sign_language_features, sign_language_labels, epochs=____, validation_split=____)