เขียน Pooling Operation ของตัวเอง
อย่างที่เห็นมาแล้ว CNN อาจมีพารามิเตอร์จำนวนมาก Pooling layer มักถูกเพิ่มระหว่าง convolutional layer ในโครงข่ายประสาทเทียม เพื่อสรุปผลลัพธ์ให้กระชับขึ้น และลดจำนวนพารามิเตอร์ในเลเยอร์ถัดไป ซึ่งช่วยให้ฝึกโมเดลได้เร็วขึ้น หรือใช้งานได้แม้มีข้อมูลไม่เพียงพอสำหรับการเรียนรู้พารามิเตอร์จำนวนมาก
Pooling layer ทำงานคล้ายกับ convolution รูปแบบหนึ่ง โดยสำหรับทุก window ในอินพุต จะเลือกค่าพิกเซลที่มากที่สุดแล้วส่งต่อเฉพาะค่านั้น ในแบบฝึกหัดนี้ จะได้เขียน max pooling operation ของตัวเอง โดยอ้างอิงจากโค้ดที่เคยใช้เขียน convolution แบบสองมิติมาก่อน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างโมเดลภาพด้วย Keras
คำแนะนำการฝึกหัด
- เข้าถึงอาร์เรย์อินพุต (
im) และเลือก window ที่ต้องการ - หาค่าสูงสุดใน window นั้น
- นำค่าที่ได้ไปเก็บในตำแหน่งที่ถูกต้องของอาร์เรย์ผลลัพธ์ (
result)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Result placeholder
result = np.zeros((im.shape[0]//2, im.shape[1]//2))
# Pooling operation
for ii in range(result.shape[0]):
for jj in range(result.shape[1]):
result[ii, jj] = np.max(____)