จากใน ep ก่อน ๆ ที่เราได้นำ Callback มาประยุกต์ใช้ใน Training Loop เพื่อช่วยให้การเทรนมีความยืดหยุ่น แต่ติดข้อจำกัดว่าเราไม่สามารถเข้าถึงข้อมูลภายในโมเดล Deep Neural Network ในแต่ละ Layer ได้ เนื่องจากการสร้างโมเดลของเราเป็นการเรียกใช้ API ภาษา Python ของ PyTorch แล้วเราจะแก้ปัญหานี้อย่างไรดี
ใน ep นี้ เราจะเจาะลึกเข้าไปในโมเดล Deep Convolutional Neural Network เข้าไปถึงโครงสร้างภายใน เข้าถึงข้อมูล การทำงานในแต่ละ Layer เข้าถึง Activation Map, Gradient ด้วยวิธีดังนี้
- โมเดลพิเศษ ที่เราสร้างขึ้นมาเอง
- เปรียบเทียบกับการเข้าไปถึงโครงสร้างภายในโดยใช้กลไก Hook ของ PyTorch
เราจะเริ่มต้นที่หัวข้อ 4. Model
ตัวอย่างการทำ Visualization ภายใน Model ด้วย Tensorboard
Hook คืออะไร ใน PyTorch
Hook คือ ฟังก์ชัน Callback ที่เราสามารถใส่ไว้ใน Module/Tensor ของ PyTorch เพื่อที่จะกำหนดพฤติกรรมของ Module/Tensor ในขั้นตอน Feedforward และ Backpropagation
เราสามารถ Register ลงทะเบียน Hook เข้ากับ Module หรือ Tensor ใดก็ได้ที่เราต้องการ โดย PyTorch จะมี Hook ให้เราเลือกใช้ 2 อย่าง คือ
- Forward Hook
- Backward Hook
Hook คือ ฟังก์ชันที่จะถูก Call เมื่อมีการ forward หรือ backward ผ่าน Module/Tensor นั้น
แต่ forward/backward นี้ที่นี้ ไม่ได้หมายถึง nn.Module.forward / backward แต่หมายถึง torch.Autograd.Function ที่อยู่ใน Tensor.grad_fn ที่เก็บข้อมูลขณะ Feedforward และใช้คำนวน Gradient ในขณะ Backpropagation