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

การใช้ tf.data สำหรับ Fine-grained Control ใน TensorFlow และ Python

บทนำ

tf.data.Dataset ให้การควบคุม input pipeline ลึกกว่า keras.preprocessing: shuffle, batch, prefetch, custom transforms

โค้ดตัวอย่าง

print("Defining customized input pipeline")
list_ds = tf.data.Dataset.list_files(str(data_dir/'*/*'), shuffle=False)
list_ds = list_ds.shuffle(image_count, reshuffle_each_iteration=False)
for f in list_ds.take(5):
    print(f.numpy())

class_names = np.array(sorted([item.name for item in data_dir.glob('*') if item.name != "LICENSE.txt"]))
print(class_names)

print("The dataset is split into training and validation set")
val_size = int(image_count * 0.2)
train_ds = list_ds.skip(val_size)
val_ds = list_ds.take(val_size)

print("Length of each subset is displayed below")
print(tf.data.experimental.cardinality(train_ds).numpy())
print(tf.data.experimental.cardinality(val_ds).numpy())

ผลลัพธ์

Defining customized input pipeline
b'/root/.keras/datasets/flower_photos/dandelion/14306875733_61d71c64c0_n.jpg'
b'/root/.keras/datasets/flower_photos/dandelion/8935477500_89f22cca03_n.jpg'
b'/root/.keras/datasets/flower_photos/sunflowers/3001531316_efae24d37d_n.jpg'
b'/root/.keras/datasets/flower_photos/daisy/7133935763_82b17c8e1b_n.jpg'
b'/root/.keras/datasets/flower_photos/tulips/17844723633_da85357fe3.jpg'
['daisy' 'dandelion' 'roses' 'sunflowers' 'tulips']
The dataset is split into training and validation set
Length of each subset is displayed below
2936
734

คำอธิบาย

  1. list_files(pattern): สร้าง dataset ของ file paths (glob pattern)
  2. shuffle(buffer_size, reshuffle_each_iteration=False): สลับครั้งเดียว (fixed split)
  3. สร้าง class_names จากโฟลเดอร์ย่อย (exclude LICENSE.txt)
  4. Split: skip(val_size) = train, take(val_size) = val (80/20)
  5. cardinality(): นับจำนวน elements ใน dataset

ข้อได้เปรียบของ tf.data

- ควบคุม shuffle buffer, batch size, prefetch เอง
- Chain transforms ได้ (map, filter, interleave)
- รองรับ distributed training, TPU, multiple workers
- Performance tuning ลึก (cache, prefetch, parallel map)