Tối ưu pipeline dữ liệu TensorFlow với cache(), shuffle(), prefetch().
Mã ví dụ
print("Cấu hình dataset cho hiệu năng...")
AUTOTUNE = tf.data.AUTOTUNE
train_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=AUTOTUNE)
val_ds = val_ds.cache().prefetch(buffer_size=AUTOTUNE)
Kết quả
Cấu hình dataset cho hiệu năng
Giải thích
- cache(): Giữ dữ liệu trong RAM sau epoch đầu tiên. Tránh đọc disk lặp lại. Nếu dữ liệu quá lớn, dùng
cache('filename')để cache trên disk. - shuffle(1000): Xáo trộn buffer 1000 mẫu. Quan trọng cho training (giảm overfitting, batch đa dạng). Chỉ áp dụng cho train_ds.
- prefetch(AUTOTUNE): Tiền tải batch tiếp theo song song với training (overlap preprocessing và GPU compute).
AUTOTUNEtự động điều chỉnh buffer size. - Thứ tự chuẩn:
cache() -> shuffle() -> batch() -> prefetch(). - Validation không cần shuffle.