PyTorch Hook คืออะไร สอน PyTorch Hook เจาะลึก Activation Map, Gradient ภายใน Deep Convolutional Neural Network – ConvNet ep.2

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

Continue reading “PyTorch Hook คืออะไร สอน PyTorch Hook เจาะลึก Activation Map, Gradient ภายใน Deep Convolutional Neural Network – ConvNet ep.2”

Convolutional Neural Network คืออะไร ภาษาไทย ตัวอย่างการทำงาน CNN, ConvNet กับชุดข้อมูล MNIST – ConvNet ep.1

ใน ep ที่แล้ว Neural Network ep.13 ที่เราได้สร้างโมเดล Deep Neural Network ที่ใช้ Linear Layer + ReLU Activation Function เราได้สร้าง Training Loop ที่มีความ Flexible จาก Callback ทำให้เราสามารถ Schedule Hyperparameter ได้ตามต้องการ

แต่ไม่ว่าจะเทรนอย่างไร เราก็จำแนก MNIST ได้ Accuracy สูงสุดแค่ 97% เท่านั้น เนื่องจากข้อจำกัดของ Model Architecture แล้วเราจะแก้ปัญหานี้อย่างไรดี

Continue reading “Convolutional Neural Network คืออะไร ภาษาไทย ตัวอย่างการทำงาน CNN, ConvNet กับชุดข้อมูล MNIST – ConvNet ep.1”

Schedule Hyperparameter ในการเทรน Machine Learning เทรนโมเดล Deep Neural Network ด้วย Learning Rate ไม่คงที่ One Cycle – Neural Network ep.13

หลังจากที่ใน ep ก่อน เราได้ใช้ LR_Find Callback หา Learning Rate ที่ดีที่สุดได้แล้ว แล้วเราจะนำมาใช้อย่างไร Learning Rate ถือว่าเป็นหนึ่งใน Hyperparameter ที่สำคัญที่สุดในการเทรน Machine Learning

มีแนวคิดจากหลากหลาย Paper ที่ว่า ในแต่ละ State ของการเทรน Deep Neural Network นั้นต้องการ Hyperparameter ต่างกันไป แล้วเราจะ Schedule Hyperparameter ของเราได้อย่างไร

Continue reading “Schedule Hyperparameter ในการเทรน Machine Learning เทรนโมเดล Deep Neural Network ด้วย Learning Rate ไม่คงที่ One Cycle – Neural Network ep.13”

PyTorch 1.3 ออกแล้ว

PyTorch เป็น Machine Learning Library ที่ได้รับความนิยมอย่างต่อเนื่องในหมู่นักวิจัย ตอนนี้ได้ออกเวอร์ชัน 1.3 แล้ว มีฟีเจอร์ใหม่ ๆ เช่น 8-bit Integer Eager Mode Quantization, สนับสนุนอุปกรณ์ Mobile iOS และ Android, สนับสนุน TPU และ Cloud, อนุญาตให้ตั้งชื่อ Tensor, Detectron2, การเข้ารหัส Tensor เพื่อความปลอดภัย สำหรับข้อมูลส่วนตัว, etc.

Continue reading “PyTorch 1.3 ออกแล้ว”

เปรียบเทียบ TensorFlow vs PyTorch ในปี 2019 ว่า Machine Learning Framework ไหน เป็นที่นิยมมากกว่ากัน

สงคราม Machine Learning Framework ระหว่าง TensorFlow และ PyTorch ที่ระอุขึ้น ตั้งแต่มีกระแส Deep Learning ในปี 2012 ล่าสุดใครจะเป็นผู้ชนะ Framework จะได้รับความนิยมมากกว่ากัน

Continue reading “เปรียบเทียบ TensorFlow vs PyTorch ในปี 2019 ว่า Machine Learning Framework ไหน เป็นที่นิยมมากกว่ากัน”

จัดการหมวดหมู่เล็ก ๆ ยิบย่อย รวมข้อมูลหมวดหมู่ Category เล็ก ๆ เป็นหมวดหมู่ Other ก่อนป้อนเทรน Machine Learning – Preprocessing ep.4

ในหลาย ๆ Dataset เราจะพบว่าข้อมูลแบบ Category มีการแตกยิบย่อยมากเกินไป เช่น บาง Category มีแค่ 1 หรือ 2 Record เท่านั้น หรือ Category เล็ก จำนวน Record แตกต่างกับ Category ใหญ่ ๆ หลายร้อย หลายพันเท่า ข้อมูล Category เล็ก ๆ ยิบย่อยเหล่านี้ อาจจะไม่ได้ช่วยโมเดล Machine Learning ในการเรียนรู้ก็ได้

ทางแก้คือ เราจะ Group รวม Category เล็ก ๆ เหล่านั้นรวมออกมาเป็น Category ใหม่ ตั้งชื่อว่า Other

Continue reading “จัดการหมวดหมู่เล็ก ๆ ยิบย่อย รวมข้อมูลหมวดหมู่ Category เล็ก ๆ เป็นหมวดหมู่ Other ก่อนป้อนเทรน Machine Learning – Preprocessing ep.4”

lr_find หา Learning Rate ที่ดีที่สุดในการเทรน Machine Learning โมเดล Deep Neural Network ด้วย Callback – Neural Network ep.12

จาก ep ก่อน เราได้รู้จัก Hyperparameter ที่สำคัญที่สุดในการเทรน Machine Learning ชื่อ Learning Rate แต่ปัญหาคือ ถ้าเรากำหนดค่า Learning น้อยไปก็ทำให้เทรนได้ช้า แต่ถ้ามากเกินไปก็ทำให้ไม่ Converge หรืออาจจะ Error ไปเลย

แล้วเราจะมีวิธีใด ที่จะหาค่า Learning Rate ที่ดีที่สุด มาใช้เทรน Deep Neural Network ของเรา

Continue reading “lr_find หา Learning Rate ที่ดีที่สุดในการเทรน Machine Learning โมเดล Deep Neural Network ด้วย Callback – Neural Network ep.12”

ตัวอย่าง Callback ในการเทรน Machine Learning คำนวน Metrics, Recorder บันทึก Loss, Learning Rate – Neural Network ep.11

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

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

Continue reading “ตัวอย่าง Callback ในการเทรน Machine Learning คำนวน Metrics, Recorder บันทึก Loss, Learning Rate – Neural Network ep.11”

การประยุกต์ใช้ Callback เพิ่มความยืดหยุดให้ Training Loop รองรับการเทรนด้วย Algorithm ซับซ้อนขึ้น – Neural Network ep.10

จาก ep ก่อน ๆ เราจะได้ Training Loop ที่สามารถเทรน Neural Network ได้อย่างถูกต้อง สมบูรณ์ ได้ผลลัพธ์เป็นที่หน้าพอใจ แต่ถ้าเราต้องการเพิ่มเติม Logic การเทรนที่ซับซ้อนยิ่งขึ้น เราจะต้องแก้โค้ดนี้ แทรกตามบรรทัดต่าง ๆ เช่น ก่อนเริ่มเทรน, ก่อนเริ่ม Epoch, หลังจากจบ 1 Epoch, etc.

ข้อเสียของการแทรกโค้ดแบบนี้ คือ ทำให้โค้ดใน Loop นี้ก็จะบวมขึ้นเรื่อย ๆ ส่งผลให้มีปัญหาในการ Maintain แล้วเราจะแก้ปัญหานี้อย่างไรดี

Continue reading “การประยุกต์ใช้ Callback เพิ่มความยืดหยุดให้ Training Loop รองรับการเทรนด้วย Algorithm ซับซ้อนขึ้น – Neural Network ep.10”

Debug โปรแกรมภาษา Python บน Jupyter Notebook ด้วย %debug, set_trace – Jupyter Notebook ep.6

วิธีที่ง่ายที่สุดในการ Debug โปรแกรมด้วย Jupyter Notebook คือการใช้ Magic Command %debug เมื่อใดก็ตามที่เราเจอ Error ให้เราสร้าง cell ขึ้นมาใหม่ แล้วพิมพ์ว่า %debug แล้วสั่งรัน ระบบจะเปิด command line

Continue reading “Debug โปรแกรมภาษา Python บน Jupyter Notebook ด้วย %debug, set_trace – Jupyter Notebook ep.6”