จาก ep ที่แล้ว ที่เราประยุกต์ใช้ Callback กับ Training Loop ในการเทรน Machine Learning ด้วยอัลกอริทึม Gradient Descent สร้างเป็น Runner Class ที่มี Callback ในทุก ๆ Event ที่เป็นไปได้ ในการเทรน Deep Neural Network แล้วเราจะใช้ประโยชน์จาก ระบบ Callback อันแสนยืดหยุ่นนี้ อย่างไรได้บ้าง

ใน ep นี้เราจะมาดูตัวอย่างการสร้าง Callback แบบง่าย ๆ แต่มีประโยชน์ คือการ คำนวน Metrics และ บันทึกค่า Loss, Learning Rate

ในการเทรน Machine Learning ด้วยอัลกอริทึม Gradient Descent เราสามารถประยุกต์ใช้ Callback ทำงานได้หลากหลาย เนื่องจากเราจะรู้ถึง Event ต่าง ๆ ที่เกิดขึ้นภายใน Training Loop ของ Neural Network ทุกขั้นตอน และ สามารถเข้าถึง/ปรับเปลี่ยนข้อมูล Model Deep Neural Network, Runner, DataBunch, Loss Function, etc. ได้ทั้งหมด

Grad-CAM Heatmap of the same picture backpropagation from different classes. Credit https://commons.wikimedia.org/wiki/File:Dont_know_whats_comin_(3926784260).jpg
Grad-CAM Heatmap of the same picture backpropagation from different classes. Credit https://commons.wikimedia.org/wiki/File:Dont_know_whats_comin_(3926784260).jpg

Callback Limitation

Callback มีข้อดีที่ทำให้การเทรนมีความยืดหยุ่นมาก แต่ก็มีข้อจำกัดข้อใหญ่ คือ เราไม่สามารถเข้าถึง Layer, Weight, Gradient ต่าง ๆ หรือ Event ภายในโมเดล Deep Neural Network ได้

เนื่องจากโมเดลที่เราใช้เป็นการเรียกใช้ API ของ PyTorch อีกต่อหนึ่ง ในกรณีที่เราต้องการเข้าถึงภายในโมเดลจริง ๆ PyTorch ก็มี Callback ให้เราใช้เหมือนกัน เรียกว่า Hook จะอธิบายต่อไป

เรามาเริ่มกันเลยดีกว่า

Open In Colab

แชร์ให้เพื่อน:

Surapong Kanoktipsatharporn on FacebookSurapong Kanoktipsatharporn on LinkedinSurapong Kanoktipsatharporn on Rss
Surapong Kanoktipsatharporn
Solutions Architect at Bua Labs
The ultimate test of your knowledge is your capacity to convey it to another.

Published by Surapong Kanoktipsatharporn

The ultimate test of your knowledge is your capacity to convey it to another.