จาก 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. ได้ทั้งหมด
Callback Limitation
Callback มีข้อดีที่ทำให้การเทรนมีความยืดหยุ่นมาก แต่ก็มีข้อจำกัดข้อใหญ่ คือ เราไม่สามารถเข้าถึง Layer, Weight, Gradient ต่าง ๆ หรือ Event ภายในโมเดล Deep Neural Network ได้
เนื่องจากโมเดลที่เราใช้เป็นการเรียกใช้ API ของ PyTorch อีกต่อหนึ่ง ในกรณีที่เราต้องการเข้าถึงภายในโมเดลจริง ๆ PyTorch ก็มี Callback ให้เราใช้เหมือนกัน เรียกว่า Hook จะอธิบายต่อไป