数据集文档
创建数据集
并获得增强的文档体验
开始使用
创建数据集
有时,当您使用自己的数据时,您可能需要创建数据集。使用 🤗 Datasets 创建数据集,可以为您的数据集带来库的所有优势:快速加载和处理、流式传输海量数据集、内存映射等等。您可以使用 🤗 Datasets 低代码方法轻松快速地创建数据集,从而缩短开始训练模型所需的时间。在许多情况下,就像拖放数据文件到 Hub 上的数据集仓库一样简单。
在本教程中,您将学习如何使用 🤗 Datasets 低代码方法来创建所有类型的数据集
- 基于文件夹的构建器,用于快速创建图像或音频数据集
from_
方法,用于从本地文件创建数据集
基于文件的构建器
🤗 Datasets 支持许多常见格式,例如 csv
、json/jsonl
、parquet
、txt
。
例如,它可以读取由一个或多个 CSV 文件组成的数据集(在这种情况下,将您的 CSV 文件作为列表传递)
>>> from datasets import load_dataset
>>> dataset = load_dataset("csv", data_files="my_file.csv")
要获取支持的格式列表和代码示例,请参阅此指南 此处。
基于文件夹的构建器
有两种基于文件夹的构建器:ImageFolder
和 AudioFolder
。这些是低代码方法,用于快速创建包含数千个示例的图像或语音和音频数据集。它们非常适合在扩展到更大的数据集之前,快速原型化计算机视觉和语音模型。基于文件夹的构建器会获取您的数据,并自动生成数据集的特性、拆分和标签。在底层
ImageFolder
使用 Image 特性来解码图像文件。支持多种图像扩展格式,例如 jpg 和 png,但也支持其他格式。您可以查看完整的 列表,其中列出了支持的图像扩展名。AudioFolder
使用 Audio 特性来解码音频文件。支持音频扩展名,例如 wav 和 mp3,您可以查看完整的 列表,其中列出了支持的音频扩展名。
数据集拆分是从仓库结构生成的,标签名称是从目录名称自动推断出来的。
例如,如果您的图像数据集(音频数据集也是如此)像这样存储
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
文件中。元数据文件需要有一个 file_name
列,将图像或音频文件链接到其相应的元数据
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.
要了解有关这些基于文件夹的构建器的更多信息,请查看 ImageFolder 或 AudioFolder 指南。
从 Python 字典
您还可以从 Python 字典中的数据创建数据集。您可以使用 from_
方法通过两种方式创建数据集
from_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 上更新