จากใน ep ก่อน ๆ ที่เราได้นำ Callback มาประยุกต์ใช้ใน Training Loop เพื่อช่วยให้การเทรนมีความยืดหยุ่น แต่ติดข้อจำกัดว่าเราไม่สามารถเข้าถึงข้อมูลภายในโมเดล Deep Neural Network ในแต่ละ Layer ได้ เนื่องจากการสร้างโมเดลของเราเป็นการเรียกใช้ API ภาษา Python ของ PyTorch แล้วเราจะแก้ปัญหานี้อย่างไรดี

ใน ep นี้ เราจะเจาะลึกเข้าไปในโมเดล Deep Convolutional Neural Network เข้าไปถึงโครงสร้างภายใน เข้าถึงข้อมูล การทำงานในแต่ละ Layer เข้าถึง Activation Map, Gradient ด้วยวิธีดังนี้

  • โมเดลพิเศษ ที่เราสร้างขึ้นมาเอง
  • เปรียบเทียบกับการเข้าไปถึงโครงสร้างภายในโดยใช้กลไก Hook ของ PyTorch

เราจะเริ่มต้นที่หัวข้อ 4. Model

Histogram ของ Weight และ Bias ใน Model Resnet18 ด้วย TensorBoard
Histogram ของ Weight และ Bias ใน Model Resnet18 ด้วย TensorBoard

ตัวอย่างการทำ Visualization ภายใน Model ด้วย Tensorboard

Hook คืออะไร ใน PyTorch

Hook คือ ฟังก์ชัน Callback ที่เราสามารถใส่ไว้ใน Module/Tensor ของ PyTorch เพื่อที่จะกำหนดพฤติกรรมของ Module/Tensor ในขั้นตอน Feedforward และ Backpropagation

เราสามารถ Register ลงทะเบียน Hook เข้ากับ Module หรือ Tensor ใดก็ได้ที่เราต้องการ โดย PyTorch จะมี Hook ให้เราเลือกใช้ 2 อย่าง คือ

  1. Forward Hook
  2. Backward Hook

Hook คือ ฟังก์ชันที่จะถูก Call เมื่อมีการ forward หรือ backward ผ่าน Module/Tensor นั้น

แต่ forward/backward นี้ที่นี้ ไม่ได้หมายถึง nn.Module.forward / backward แต่หมายถึง torch.Autograd.Function ที่อยู่ใน Tensor.grad_fn ที่เก็บข้อมูลขณะ Feedforward และใช้คำนวน Gradient ในขณะ Backpropagation

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

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.