Early stopping: เพิ่มประสิทธิภาพการ optimize
เมื่อเรียนรู้วิธีติดตามประสิทธิภาพของโมเดลระหว่างการ optimize แล้ว ก็สามารถใช้ early stopping เพื่อหยุดการ optimize เมื่อไม่ช่วยให้ผลดีขึ้นอีกต่อไปได้ เนื่องจากการ optimize จะหยุดโดยอัตโนมัติเมื่อไม่มีการพัฒนา จึงสามารถตั้งค่า epochs ให้สูงในการเรียก .fit() ได้เลย อย่างที่ Dan แสดงในวิดีโอ
โมเดลที่จะ optimize ถูกกำหนดไว้เป็นตัวแปร model และเช่นเดิม ข้อมูลถูกโหลดไว้ล่วงหน้าเป็น predictors และ target
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Introduction to Deep Learning in Python
คำแนะนำการฝึกหัด
- นำเข้า
EarlyStoppingจากtensorflow.keras.callbacks - Compile โมเดลโดยใช้
'adam'เป็นoptimizer,'categorical_crossentropy'เป็น loss function และmetrics=['accuracy']เพื่อดูค่า accuracy ในแต่ละ epoch - สร้างออบเจ็กต์
EarlyStoppingชื่อearly_stopping_monitorโดยกำหนดให้หยุด optimize เมื่อ validation loss ไม่ดีขึ้นติดต่อกัน 2 epoch ด้วยการตั้งพารามิเตอร์patienceของEarlyStopping()เป็น2 - Fit โมเดลด้วย
predictorsและtargetกำหนดจำนวนepochsเป็น30และใช้ validation split เป็น0.3นอกจากนี้ ให้ส่ง[early_stopping_monitor]ไปยังพารามิเตอร์callbacks
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import EarlyStopping
____
# Save the number of columns in predictors: n_cols
n_cols = predictors.shape[1]
input_shape = (n_cols,)
# Specify the model
model = Sequential()
model.add(Dense(100, activation='relu', input_shape = input_shape))
model.add(Dense(100, activation='relu'))
model.add(Dense(2, activation='softmax'))
# Compile the model
____
# Define early_stopping_monitor
early_stopping_monitor = ____
# Fit the model
____