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

การปรับพารามิเตอร์การ 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
  • ใช้ for loop วนซ้ำบน lr_to_test:
    • ใช้ฟังก์ชัน get_new_model() เพื่อสร้างโมเดลใหม่ที่ยังไม่ได้ผ่านการ optimize
    • สร้าง optimizer ชื่อ my_optimizer โดยใช้ constructor SGD() พร้อม keyword argument lr=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
    ____
แก้ไขและรันโค้ด