Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีสร้าง Normalization Layer สำหรับ Abalone Dataset ด้วย TensorFlow

บทนำ

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 input
  • adapt(features): คำนวณ mean และ variance จาก training features (ต้องใช้ training data เท่านั้น)
  • วาง normalization layer เป็น layer แรกของโมเดล → preprocessing รวมอยู่ในโมเดล (deploy ง่ายขึ้น)
  • ต่อด้วย Dense(64) → Dense(1) สำหรับ regression (predict age)

ข้อดีของการใส่ Normalization ในโมเดล

  1. ไม่ต้อง normalize ข้อมูลเองก่อน feed เข้าโมเดล
  2. เวลา deploy โมเดล รับ raw input ได้เลย
  3. กัน error จากการ normalize train/test ต่างกัน

ข้อควรระวัง

adapt() ต้องเรียกก่อน fit() และใช้ training data เท่านั้น (ไม่ใช้ validation/test data) เพื่อป้องกัน data leakage