บทนำ
Normalization layer ช่วยปรับสเกลฟีเจอร์ให้อยู่ในช่วงที่เหมาะสม (mean=0, std=1) ซึ่งช่วยให้โมเดล converge เร็วและเสถียรขึ้น
TensorFlow/Keras มี preprocessing.Normalization layer ที่คำนวณ mean/variance อัตโนมัติจาก training data
โค้ดตัวอย่าง
print("A normalization layer is being built")
normalize = preprocessing.Normalization()
normalize.adapt(abalone_features)
print("A dense layer is being added")
norm_abalone_model = tf.keras.Sequential([
normalize,
layers.Dense(64),
layers.Dense(1)
])ผลลัพธ์
A normalization layer is being built A dense layer is being added
คำอธิบาย
Normalization(): สร้าง layer ที่จะ normalize inputadapt(features): คำนวณ mean และ variance จาก training features (ต้องใช้ training data เท่านั้น)- วาง normalization layer เป็น layer แรกของโมเดล → preprocessing รวมอยู่ในโมเดล (deploy ง่ายขึ้น)
- ต่อด้วย Dense(64) → Dense(1) สำหรับ regression (predict age)
ข้อดีของการใส่ Normalization ในโมเดล
- ไม่ต้อง normalize ข้อมูลเองก่อน feed เข้าโมเดล
- เวลา deploy โมเดล รับ raw input ได้เลย
- กัน error จากการ normalize train/test ต่างกัน
ข้อควรระวัง
adapt() ต้องเรียกก่อน fit() และใช้ training data เท่านั้น (ไม่ใช้ validation/test data) เพื่อป้องกัน data leakage