Datasets documentation
Tạo một tập dữ liệu
Tạo một tập dữ liệu
Đôi khi, bạn có thể cần tạo một dataset nếu bạn đang làm việc với dữ liệu của riêng mình. Việc tạo dataset bằng 🤗 Datasets mang lại cho dataset của bạn tất cả các lợi thế của thư viện: tải và xử lý nhanh, stream các dataset khổng lồ, memory-mapping, và nhiều hơn nữa. Bạn có thể dễ dàng và nhanh chóng tạo một dataset bằng các phương pháp low-code của 🤗 Datasets, giảm thời gian cần thiết để bắt đầu huấn luyện một model. Trong nhiều trường hợp, việc này đơn giản như kéo và thả các tệp dữ liệu của bạn vào một kho dataset trên Hub.
Trong hướng dẫn này, bạn sẽ học cách sử dụng các phương thức low-code của 🤗 Datasets để tạo bộ dữ liệu từ dữ liệu của riêng bạn.
Lưu ý
Nếu bạn muốn tìm hiểu cách tải các bộ dữ liệu có sẵn, hoặc cách tải các tệp cục bộ và từ xa (CSV, JSON, Parquet, v.v.), hãy xem Hướng dẫn tải.
Hướng dẫn này bao gồm:
- Trình tạo dựa trên thư mục để nhanh chóng tạo bộ dữ liệu hình ảnh hoặc âm thanh
- phương thức
from_để tạo bộ dữ liệu từ các đối tượng Python cục bộ
Trình xây dựng dựa trên tệp
🤗 Datasets hỗ trợ nhiều định dạng phổ biến như csv, json/jsonl, parquet, txt.
Ví dụ, nó có thể đọc một tập dữ liệu gồm một hoặc nhiều tệp CSV (trong trường hợp này, hãy truyền các tệp CSV của bạn dưới dạng một danh sách):
>>> from datasets import load_dataset
>>> dataset = load_dataset("csv", data_files="my_file.csv")Để xem danh sách các định dạng được hỗ trợ và các ví dụ mã, hãy làm theo hướng dẫn này tại đây.
Trình xây dựng dựa trên thư mục
Có hai trình xây dựng dựa trên thư mục, ImageFolder và AudioFolder. Đây là các phương pháp ít mã hóa để nhanh chóng tạo một bộ dữ liệu hình ảnh hoặc giọng nói và âm thanh với vài nghìn ví dụ. Chúng rất hữu ích để thử nghiệm nhanh các mô hình thị giác máy tính và giọng nói trước khi mở rộng sang bộ dữ liệu lớn hơn. Trình xây dựng dựa trên thư mục sẽ lấy dữ liệu của bạn và tự động tạo ra các đặc trưng, phần chia và nhãn của bộ dữ liệu. Bên trong:
ImageFoldersử dụng tính năng Image để giải mã tệp hình ảnh. Nhiều định dạng mở rộng hình ảnh được hỗ trợ, chẳng hạn như jpg và png, nhưng các định dạng khác cũng được hỗ trợ. Bạn có thể xem danh sách đầy đủ các mở rộng hình ảnh được hỗ trợ.AudioFoldersử dụng tính năng Audio để giải mã tệp âm thanh. Các phần mở rộng như wav, mp3 và thậm chí cả mp4 đều được hỗ trợ, và bạn có thể xem danh sách đầy đủ các phần mở rộng âm thanh được hỗ trợ. Việc giải mã được thực hiện thông qua ffmpeg.
Các phần chia của bộ dữ liệu được tạo từ cấu trúc của kho lưu trữ, và tên nhãn được suy ra tự động từ tên thư mục.
Ví dụ, nếu bộ dữ liệu ảnh của bạn (điều này cũng áp dụng cho bộ dữ liệu âm thanh) được lưu trữ như sau:
pokemon/train/grass/bulbasaur.png
pokemon/train/fire/charmander.png
pokemon/train/water/squirtle.png
pokemon/test/grass/ivysaur.png
pokemon/test/fire/charmeleon.png
pokemon/test/water/wartortle.pngSau đó, đây là cách trình xây dựng dựa trên thư mục tạo ra một ví dụ:

Tạo bộ dữ liệu ảnh bằng cách chỉ định imagefolder trong load_dataset():
>>> from datasets import load_dataset
>>> dataset = load_dataset("imagefolder", data_dir="/path/to/pokemon")Một tập dữ liệu âm thanh được tạo theo cách tương tự, ngoại trừ việc bạn chỉ định audiofolder trong load_dataset() thay vào đó:
>>> from datasets import load_dataset
>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")Bất kỳ thông tin bổ sung nào về tập dữ liệu của bạn, chẳng hạn như chú thích văn bản hoặc bản ghi âm, có thể được bao gồm bằng một tệp metadata.csv trong thư mục chứa tập dữ liệu của bạn. Tệp metadata cần có một cột file_name để liên kết tệp hình ảnh hoặc âm thanh với metadata tương ứng của nó:
file_name, text
bulbasaur.png, There is a plant seed on its back right from the day this Pokémon is born.
charmander.png, It has a preference for hot things.
squirtle.png, When it retracts its long neck into its shell, it squirts out water with vigorous force.Để tìm hiểu thêm về từng trình xây dựng dựa trên thư mục này, hãy xem các hướng dẫn ImageFolder, AudioFolder hoặc MeshFolder.
Từ các từ điển Python
Bạn cũng có thể tạo một dataset từ dữ liệu trong các từ điển Python. Có hai cách bạn có thể tạo một dataset bằng cách sử dụng các phương thức from_:
Phương thức from_generator() là cách tiết kiệm bộ nhớ nhất để tạo một dataset từ một generator nhờ vào hành vi lặp lại của generator. Điều này đặc biệt hữu ích khi bạn làm việc với một dataset rất lớn có thể không vừa trong bộ nhớ, vì dataset được tạo dần trên đĩa và sau đó được ánh xạ vào bộ nhớ (memory-mapped).
>>> from datasets import Dataset >>> def gen(): ... yield {"pokemon": "bulbasaur", "type": "grass"} ... yield {"pokemon": "squirtle", "type": "water"} >>> ds = Dataset.from_generator(gen) >>> ds[0] {"pokemon": "bulbasaur", "type": "grass"}Một IterableDataset dựa trên generator cần được lặp lại bằng một vòng lặp
for, ví dụ:>>> from datasets import IterableDataset >>> ds = IterableDataset.from_generator(gen) >>> for example in ds: ... print(example) {"pokemon": "bulbasaur", "type": "grass"} {"pokemon": "squirtle", "type": "water"}Phương thức from_dict() là cách đơn giản để tạo một tập dữ liệu từ một từ điển:
>>> from datasets import Dataset >>> ds = Dataset.from_dict({"pokemon": ["bulbasaur", "squirtle"], "type": ["grass", "water"]}) >>> ds[0] {"pokemon": "bulbasaur", "type": "grass"}Để tạo bộ dữ liệu hình ảnh hoặc âm thanh, hãy nối phương thức cast_column() với from_dict() và chỉ định cột cùng loại đặc trưng. Ví dụ, để tạo bộ dữ liệu âm thanh:
>>> audio_dataset = Dataset.from_dict({"audio": ["path/to/audio_1", ..., "path/to/audio_n"]}).cast_column("audio", Audio())
Giờ đây, khi bạn đã biết cách tạo một dataset, hãy cân nhắc chia sẻ nó trên Hub để cộng đồng cũng có thể hưởng lợi từ công việc của bạn! Hãy chuyển sang phần tiếp theo để tìm hiểu cách chia sẻ dataset của bạn.
Update on GitHub