前言

有时,如果您正在使用自己的数据,可能需要创建一个数据集。使用🤗 Datasets创建数据集可以让您的数据集享受到库的所有优势:快速加载和处理、流式处理大型数据集、内存映射等等。您可以使用🤗 Datasets的低代码方法轻松快速地创建数据集,从而缩短开始训练模型所需的时间。在许多情况下,将您的数据文件拖放到Hub上的数据集仓库中就像拖放一样简单。

在本教程中,您将学习如何使用🤗 Datasets的低代码方法来创建所有类型的数据集:

  • from_ 方法,用于从本地文件创建数据集

Operating System: Ubuntu 22.04.4 LTS

参考文档

  1. Create a dataset

File-based builders

🤗 Datasets 支持许多常见格式,如 csv, json/jsonl, parquet, txt 等。

例如,它可以读取由一个或多个 CSV 文件组成的数据集(在这种情况下,将您的 CSV 文件作为列表传递):

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

要获取支持的格式列表和代码示例,请遵循这里的指南

From Python dictionaries

您还可以从Python字典中的数据创建数据集。使用 from_ 方法创建数据集有两种方式:

  • from_generator() 方法是从生成器创建数据集的最节省内存的方式,这归功于生成器的迭代行为。当您处理可能无法一次性装入内存的非常大的数据集时,这种方式尤其有用,因为数据集是逐步在磁盘上生成,然后进行内存映射的。
1
2
3
4
5
6
7
>>> 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 循环来迭代,例如:

1
2
3
4
5
6
>>> 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() 方法是一种直接从字典创建数据集的简单方式:
1
2
3
4
>>> from datasets import Dataset
>>> ds = Dataset.from_dict({"pokemon": ["bulbasaur", "squirtle"], "type": ["grass", "water"]})
>>> ds[0]
{"pokemon": "bulbasaur", "type": "grass"}

要创建图像或音频数据集,请将 cast_column() 方法与 from_dict() 方法链式调用,并指定列和特征类型。例如,创建音频数据集:

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

现在您已经知道如何创建一个数据集了,考虑在 Hub 上分享它,这样社区的其他成员也能从您的工作中受益!继续阅读下一部分,学习如何分享您的数据集。

结语

第一百九十五篇博文写完,开心!!!!

今天,也是充满希望的一天。