การปรับพารามิเตอร์การ Optimization
ถึงเวลาลงมือปรับ optimization กันแล้ว คราวนี้จะได้ลองใช้ learning rate ที่ต่ำมาก สูงมาก และพอเหมาะกับโมเดล ลองดูผลลัพธ์หลังรันแบบฝึกหัดนี้ โดยจำไว้ว่าค่า loss function ที่ต่ำกว่าหมายถึงผลลัพธ์ที่ดีกว่า
สำหรับแบบฝึกหัดนี้ เราได้โหลดค่า predictors และ target จากโมเดล classification ก่อนหน้าของคุณไว้แล้ว (โมเดลทำนายผู้รอดชีวิตบนเรือไททานิค) เพื่อให้เปรียบเทียบผลของแต่ละ learning rate ได้อย่างยุติธรรม การ optimization จะต้องเริ่มต้นใหม่ทุกครั้งที่เปลี่ยน learning rate จึงได้สร้างฟังก์ชัน get_new_model() ไว้สำหรับสร้างโมเดลที่ยังไม่ได้ผ่านการ optimize
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Introduction to Deep Learning in Python
คำแนะนำการฝึกหัด
- นำเข้า
SGDจากtensorflow.keras.optimizers - สร้างลิสต์ของ learning rate ที่ต้องการทดสอบชื่อ
lr_to_testโดยให้มีค่า.000001,0.01, และ1 - ใช้
forloop วนซ้ำบนlr_to_test:- ใช้ฟังก์ชัน
get_new_model()เพื่อสร้างโมเดลใหม่ที่ยังไม่ได้ผ่านการ optimize - สร้าง optimizer ชื่อ
my_optimizerโดยใช้ constructorSGD()พร้อม keyword argumentlr=lr - คอมไพล์โมเดล โดยกำหนดพารามิเตอร์
optimizerเป็น SGD object ที่สร้างไว้ข้างต้น และเนื่องจากนี่เป็นปัญหา classification ให้ใช้'categorical_crossentropy'สำหรับพารามิเตอร์loss - ฝึกโมเดลโดยใช้
predictorsและtarget
- ใช้ฟังก์ชัน
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the SGD optimizer
____
# Create list of learning rates: lr_to_test
lr_to_test = ____
# Loop over learning rates
for lr in lr_to_test:
print('\n\nTesting model with learning rate: %f\n'%lr )
# Build new model to test, unaffected by previous models
model = ____
# Create SGD optimizer with specified learning rate: my_optimizer
my_optimizer = ____
# Compile the model
____
# Fit the model
____