เพิ่มประสิทธิภาพการโหลดข้อมูลด้วย cache, shuffle, และ prefetch
โค้ดตัวอย่าง
print("กำหนดค่า Dataset สำหรับประสิทธิภาพ...")
AUTOTUNE = tf.data.AUTOTUNE
train_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=AUTOTUNE)
val_ds = val_ds.cache().prefetch(buffer_size=AUTOTUNE)
ผลลัพธ์
กำหนดค่า Dataset สำหรับประสิทธิภาพ...
คำอธิบาย
- cache(): เก็บข้อมูลใน RAM หลังโหลดครั้งแรก (epoch แรก) ลด I/O disk ใน epoch ต่อไป
- shuffle(1000): สลับข้อมูลใน buffer size 1000 ป้องกัน overfitting ให้ batch หลากหลาย
- prefetch(AUTOTUNE): เตรียม batch ถัดไปขณะที่ GPU กำลังฝึก batch ปัจจุบัน (overlap CPU/GPU)
- AUTOTUNE: ให้ TensorFlow ตั้งค่า buffer size อัตโนมัติตาม hardware
- ลำดับสำคัญ:
cache() -> shuffle() -> prefetch() - ถ้าข้อมูลใหญ่เกิน RAM ใช้
cache('filename')บันทึกลงดิสก์แทน