資料集文件

建立資料集

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

建立資料集

有時候,如果您需要使用自己的資料,可能需要建立一個資料集。使用 🤗 Datasets 建立資料集可以讓您的資料集享有該函式庫的所有優勢:快速載入與處理、串流超大型資料集記憶體映射 (memory-mapping) 等等。您可以透過 🤗 Datasets 的低程式碼 (low-code) 方法輕鬆且快速地建立資料集,減少開始模型訓練所需的時間。在許多情況下,這就像將您的資料檔拖放到 Hub 上的資料集儲存庫中一樣簡單。

在本教學中,您將學習如何使用 🤗 Datasets 的低程式碼方法來建立各種類型的資料集:

  • 用於快速建立影像或音訊資料集的「資料夾基礎建構器 (Folder-based builders)」
  • 用於從本機檔案建立資料集的 from_ 方法

檔案基礎建構器 (File-based builders)

🤗 Datasets 支援許多常見格式,例如 csvjson/jsonlparquettxt

例如,它可以讀取由一個或多個 CSV 檔案組成的資料集(在此情況下,請將您的 CSV 檔案作為列表傳入)。

>>> from datasets import load_dataset
>>> dataset = load_dataset("csv", data_files="my_file.csv")

若要取得支援的格式列表與程式碼範例,請參閱此處的指南。

資料夾基礎建構器 (Folder-based builders)

有兩種資料夾基礎建構器:ImageFolderAudioFolder。這些是低程式碼方法,用於快速建立包含數千個樣本的影像或語音與音訊資料集。它們非常適合在擴展到更大規模的資料集之前,快速建立電腦視覺與語音模型的原型。資料夾基礎建構器會自動處理您的資料並生成資料集的特徵 (features)、分割 (splits) 與標籤 (labels)。底層運作方式如下:

  • ImageFolder 使用 Image 特徵來解碼影像檔案。支援許多影像副檔名格式(如 jpg 和 png),也支援其他格式。您可以查看完整的支援影像副檔名列表
  • AudioFolder 使用 Audio 特徵來解碼音訊檔案。支援 wav、mp3 甚至 mp4 等副檔名,您可以查看完整的支援音訊副檔名列表。解碼是透過 ffmpeg 執行的。

資料集分割是根據儲存庫結構生成的,而標籤名稱則會自動根據目錄名稱進行推斷。

例如,如果您的影像資料集(音訊資料集亦同)儲存方式如下:

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.png

那麼資料夾基礎建構器生成範例的方式如下:

透過在 load_dataset() 中指定 imagefolder 來建立影像資料集:

>>> from datasets import load_dataset

>>> dataset = load_dataset("imagefolder", data_dir="/path/to/pokemon")

建立音訊資料集的方式相同,只是您改為在 load_dataset() 中指定 audiofolder

>>> from datasets import load_dataset

>>> dataset = load_dataset("audiofolder", data_dir="/path/to/folder")

關於您資料集的任何額外資訊(例如文字標題或轉錄內容),都可以包含在資料集資料夾中的 metadata.csv 檔案內。Metadata 檔案必須包含一個 file_name 欄位,將影像或音訊檔案連結至其對應的 metadata。

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.

若要進一步了解這些資料夾基礎建構器,請查看 ImageFolderAudioFolder 指南。

從 Python 字典建立 (From Python dictionaries)

您也可以從 Python 字典中的資料建立資料集。有兩種方法可以使用 from_ 方法建立資料集:

  • from_generator() 方法是從產生器 (generator) 建立資料集時,記憶體效率最高的方式,這是由於產生器的迭代特性。這對於處理無法放入記憶體的超大型資料集特別有用,因為資料集會逐步在磁碟上生成並進行記憶體映射。

    >>> 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"}

    基於產生器的 IterableDataset 需要使用 for 迴圈進行迭代。

    >>> from datasets import IterableDataset
    >>> ds = IterableDataset.from_generator(gen)
    >>> for example in ds:
    ...     print(example)
    {"pokemon": "bulbasaur", "type": "grass"}
    {"pokemon": "squirtle", "type": "water"}
  • from_dict() 方法是從字典建立資料集的直接方式。

    >>> from datasets import Dataset
    >>> ds = Dataset.from_dict({"pokemon": ["bulbasaur", "squirtle"], "type": ["grass", "water"]})
    >>> ds[0]
    {"pokemon": "bulbasaur", "type": "grass"}

    若要建立影像或音訊資料集,請將 cast_column() 方法與 from_dict() 串接,並指定欄位名稱與特徵類型。例如,建立音訊資料集:

    >>> audio_dataset = Dataset.from_dict({"audio": ["path/to/audio_1", ..., "path/to/audio_n"]}).cast_column("audio", Audio())

現在您已經知道如何建立資料集,請考慮將其分享到 Hub 上,讓社群也能受益於您的工作成果!請繼續進行下一節,學習如何分享您的資料集。

在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.