Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách dùng tf.data để kiểm soát tinh vi (finer control) với TensorFlow và Python

tf.data giúp tùy chỉnh pipeline xây dựng mô hình: xáo trộn (shuffle) dữ liệu để các loại phân bố đều (nếu có thể).

Mã ví dụ

print("Định nghĩa custom 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("Chia dataset thành train/validation")
val_size = int(image_count * 0.2)
train_ds = list_ds.skip(val_size)
val_ds = list_ds.take(val_size)

print("Độ dài mỗi subset")
print(tf.data.experimental.cardinality(train_ds).numpy())
print(tf.data.experimental.cardinality(val_ds).numpy())

Nguồn mã: TensorFlow Images Tutorial

Đầu ra

Định nghĩa custom 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']
Chia dataset thành train/validation
Độ dài mỗi subset
2936
734

Giải thích

  • Keras preprocessing utility tạo tf.data.Dataset từ thư mục ảnh.
  • Để kiểm soát tinh vi hơn, viết custom pipeline bằng tf.data.
  • Cấu trúc thư mục file dùng để compile danh sách class_names.