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

Chia tập dữ liệu Iliad thành train/test với TensorFlow

TensorFlow cung cấp công cụ mạnh mẽ để xử lý và chia tập dữ liệu văn bản. Trong bài này, chúng ta sẽ thấy cách tách bộ dữ liệu Iliad thành tập huấn luyện và tập validation bằng tf.data.Dataset.

Khái niệm Tensor

Tensor là cấu trúc dữ liệu cơ bản trong TensorFlow - mảng đa chiều được đặc trưng bởi 3 thuộc tính:

  • Rank (Bậc): Số chiều của tensor (scalar=0, vector=1, matrix=2, ...)
  • Type (Kiểu dữ liệu): Kiểu của các phần tử (int32, float32, string, ...)
  • Shape (Kích thước): Kích thước từng chiều (số hàng, cột, ...)

Chia dữ liệu và padding

Dữ liệu Iliad chứa 3 file văn bản đã tiền xử lý. Sau khi vector hóa, ta sử dụng TextVectorization layer để nhóm batch và padding:

train_data = all_encoded_data.skip(VALIDATION_SIZE).shuffle(BUFFER_SIZE)
validation_data = all_encoded_data.take(VALIDATION_SIZE)

train_data = train_data.padded_batch(BATCH_SIZE)
validation_data = validation_data.padded_batch(BATCH_SIZE)

sample_text, sample_labels = next(iter(validation_data))
print("Kích thước batch text:", sample_text.shape)
print("Kích thước batch label:", sample_labels.shape)
print("Ví dụ text:", sample_text[5])
print("Ví dụ label:", sample_labels[5])

Kết quả

Kích thước batch text: (64, 18)
Kích thước batch label: (64,)
Ví dụ text: tf.Tensor([20 391 2 11 144 787 2 3498 16 49 2 0 0 0 0 0 0 0], shape=(18,), dtype=int64)
Ví dụ label: tf.Tensor(1, shape=(), dtype=int64)

Giải thích

  • Padding cần thiết vì các mẫu trong một batch phải có cùng kích thước, nhưng độ dài câu thực tế khác nhau.
  • tf.data.Dataset hỗ trợ chia dữ liệu và padded-batching hiệu quả.
  • train_data và validation_data là tập hợp các batch, mỗi batch là cặp (nhiều mẫu, nhiều nhãn) dưới dạng mảng.

Nguồn: TensorFlow Text Loading Tutorial