เลเยอร์ convolutional และ pooling layer นั้นไม่ขึ้นกับขนาดอินพุต อย่างไรก็ตามผลลัพธ์ของเลเยอร์ convolutional จะมีขนาดเชิงพื้นที่ที่แตกต่างกันสำหรับรูปภาพที่มีขนาดแตกต่างกันและสิ่งนี้จะทำให้เกิดปัญหาหากเรามีเลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์หลังจากนั้น (เนื่องจากเลเยอร์ที่เชื่อมต่อทั้งหมดของเรา มีวิธีแก้ไขปัญหานี้หลายประการ:
1. Global Pooling:หลีกเลี่ยงเลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์ในตอนท้ายของเลเยอร์ convolutional และแทนที่จะใช้การรวม (เช่น Global Average Pooling) เพื่อลดการแมปคุณสมบัติของคุณจากรูปร่าง (N, H, W, C) (ก่อนพูลโลก ) เป็นรูปร่าง (N, 1,1, C) (หลังพูลรวมทั่วโลก) โดยที่:
N = จำนวนตัวอย่างของรถมินิบัส
H = ความสูงเชิงพื้นที่ของแผนที่คุณลักษณะ
W = ความกว้างเชิงพื้นที่ของแผนที่คุณลักษณะ
C = จำนวนแผนที่คุณลักษณะ (ช่อง)
เป็น สามารถมองเห็นได้ขนาดของเอาต์พุต (N * C) เป็นอิสระจากขนาดเชิงพื้นที่ (H, W) ของคุณสมบัติแผนที่ ในกรณีของการจำแนกคุณสามารถใช้เลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์ด้านบนเพื่อรับบันทึกสำหรับชั้นเรียนของคุณ
2. การรวมกำไรขนาดผันแปร:ใช้ขอบเขตการรวมกำไรขนาดตัวแปรเพื่อรับขนาดการแมปคุณสมบัติเดียวกันสำหรับขนาดอินพุตที่แตกต่างกัน
3. ภาพอินพุต / ครอบตัด / ปรับขนาด / Pad:คุณสามารถลอง rescale / ครอบตัด / pad ภาพอินพุตของคุณให้มีรูปร่างเหมือนกัน
ในบริบทของการเรียนรู้การถ่ายโอนคุณอาจต้องการใช้อินพุตที่มีขนาดแตกต่างจากอินพุตดั้งเดิมที่ฝึกอบรมด้วย นี่คือตัวเลือกบางอย่างสำหรับการทำเช่นนั้น:
4. สร้างเลเยอร์ที่เชื่อมต่อใหม่อย่างสมบูรณ์:คุณสามารถวางเลเยอร์ที่เชื่อมต่อเต็มที่เดิมได้อย่างสมบูรณ์และเริ่มต้นเลเยอร์ที่เชื่อมต่อใหม่ทั้งหมดด้วยมิติที่คุณต้องการและฝึกฝนตั้งแต่เริ่มต้น
5. ปฏิบัติต่อเลเยอร์ที่เชื่อมต่ออย่างเต็มรูปแบบ:โดยปกติเราจะเปลี่ยนรูปร่างแผนที่คุณลักษณะจาก (N, H, W, C) เป็น (N, H * W * C) ก่อนที่จะป้อนเข้าสู่เลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์ แต่คุณยังสามารถปฏิบัติต่อเลเยอร์ที่เชื่อมต่ออย่างเต็มที่เป็นรูปแบบที่มีช่องเปิด (H, W) จากนั้นคุณสามารถโน้มน้าวเคอร์เนลนี้ด้วยการแมปคุณสมบัติของคุณโดยไม่คำนึงถึงขนาดของมัน (ใช้การเติมเต็มศูนย์ถ้าจำเป็น) [
http://cs231n.github.io/transfer-learning/ ]