【深度学习代码调试5】标准化数据集:TensorFlow Datasets (TFDS)自动化数据加载与预处理

ops/2024/10/25 6:31:30/

【标准化数据集】TensorFlow Datasets、TFDS:自动化数据加载与预处理

  • 写在最前面
      • 1. 什么是 TensorFlow Datasets (TFDS)?
        • 主要特点:
      • 2. TFDS 的核心 API:`tfds.builder` 和 `download_and_prepare`
        • `tfds.builder`:创建数据集构建器
          • 示例:
        • `download_and_prepare`:下载与准备数据集
          • 示例:
      • 3. TFDS 常见的可选参数
        • `tfds.builder` 可选参数:
        • `download_and_prepare` 可选参数:
          • 示例:自定义下载路径和下载模式
      • 4. DownloadConfig:更高级的下载控制
        • `DownloadConfig` 主要参数:
          • 示例:
      • 5. 完整示例:加载 Caltech101 数据集
      • 6. 总结

在这里插入图片描述


请添加图片描述

🌈你好呀!我是 是Yu欸
🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!

写在最前面

版权声明:本文为原创,遵循 CC 4.0 BY-SA 协议。转载请注明出处。

在机器学习和深度学习项目中,数据的准备和预处理是极其重要的一环。然而,处理各种格式的数据集通常是一个耗时且容易出错的过程。为此,TensorFlow Datasets (TFDS) 提供了一个简化、自动化的数据集加载与预处理解决方案。本文将全面介绍 TFDS 的功能和使用方法,并展示如何使用 tfds.builderdownload_and_prepare 处理数据集。

在这里插入图片描述

请添加图片描述


1. 什么是 TensorFlow Datasets (TFDS)?

TensorFlow Datasets (TFDS) 是一个为机器学习模型提供标准化数据集的库。它不仅支持 TensorFlow,也可以与其他框架(例如 PyTorch)一起使用。TFDS 提供了一个一致的 API 来访问广泛的标准数据集,同时支持自动下载、预处理和缓存。

TFDS 的核心目标是减少数据集准备的繁琐操作,帮助用户专注于模型开发,而不是数据处理。无论是图像、文本、时间序列还是其他类型的数据,TFDS 都可以帮助快速加载和处理。

主要特点:
  • 自动下载与缓存:通过简单的命令即可自动下载、解压并缓存数据集。
  • 标准化数据集格式:所有数据集都统一处理为 tf.data.Dataset,便于与 TensorFlow API 兼容。
  • 丰富的数据集库:涵盖了常见的机器学习任务数据集,如 CIFAR、ImageNet、COCO、MNIST 等。
  • 数据集拆分:自动将数据集分为训练集、验证集和测试集,并提供了一致的 API 来访问这些部分。

2. TFDS 的核心 API:tfds.builderdownload_and_prepare

TFDS 提供了两个主要的方法来加载和准备数据集:tfds.builderdownload_and_prepare。这两个方法的配合使用,极大地简化了数据集的加载流程。

tfds.builder:创建数据集构建器

tfds.builder 用于根据数据集名称创建一个数据集构建器对象。这个构建器对象可以控制数据集的下载、预处理和加载。

示例:
python">import tensorflow_datasets as tfdsdata_dir = "/path/to/data"
dataset_builder = tfds.builder("caltech101:3.*.*", data_dir=data_dir)
  • "caltech101:3.*.*" 表示使用 Caltech101 数据集的版本 3.x.x。
  • data_dir 参数用于指定数据的存储位置。如果未指定,数据将被下载到默认路径 ~/tensorflow_datasets/
download_and_prepare:下载与准备数据集

创建数据集构建器后,您可以使用 download_and_prepare() 方法来自动下载并准备数据集。这一方法不仅会下载数据,还会对数据进行解压、预处理并转换为标准的 TensorFlow 格式。

示例:
python">dataset_builder.download_and_prepare()
  • 该方法会自动下载数据集,并将其转换为 TFRecord 格式,以便后续加载时能够高效读取。
  • 如果数据集已经下载并准备完毕,则会跳过下载步骤,直接从缓存中加载。

3. TFDS 常见的可选参数

tfds.builderdownload_and_prepare 支持多个可选参数,以便您可以自定义数据集的处理行为。

tfds.builder 可选参数:
  • dataset_name:数据集的名称和版本号,例如 "caltech101:3.*.*"
  • data_dir:指定数据存储路径。
  • builder_kwargs:一些额外的构建参数。例如,某些数据集允许选择不同的子集或模式。
download_and_prepare 可选参数:
  • download_dir:指定数据集的下载临时存储路径。
  • download_config:自定义下载过程,可以通过 tfds.download.DownloadConfig 控制解压路径、手动下载路径等。
  • compute_stats:是否重新计算数据集的统计信息。
  • max_examples_per_split:限制每个数据集拆分中的最大示例数,通常用于调试。
  • try_gcs:是否优先从 Google Cloud Storage 下载数据。
示例:自定义下载路径和下载模式
python">from tensorflow_datasets.core.download import DownloadConfigconfig = DownloadConfig(extract_dir='/tmp/tfds_extract',  # 数据解压路径manual_dir='/path/to/manual/data',  # 手动下载文件路径download_mode='reuse_dataset_if_exists'  # 如果数据集已存在则跳过下载
)dataset_builder.download_and_prepare(download_config=config)

4. DownloadConfig:更高级的下载控制

DownloadConfig 提供了更精细的控制下载过程的选项,例如手动下载路径、解压路径以及下载模式。您可以使用 DownloadConfig 对象来自定义数据集的下载方式。

DownloadConfig 主要参数:
  • extract_dir:指定解压路径。
  • manual_dir:某些数据集由于版权原因无法自动下载,需要手动下载并指定路径。
  • download_mode:下载模式,例如 'reuse_dataset_if_exists'(如果数据集存在则跳过下载)或 'force_rebuild'(强制重新下载和解压)。
  • register_checksums:是否注册文件校验和。
示例:
python">config = DownloadConfig(extract_dir='/path/to/extracted_data',manual_dir='/path/to/manual_data',download_mode='force_rebuild'  # 强制重新下载
)
dataset_builder.download_and_prepare(download_config=config)

5. 完整示例:加载 Caltech101 数据集

结合以上内容,下面是一个完整的示例,用于加载和处理 Caltech101 数据集:

python">import tensorflow_datasets as tfds
from tensorflow_datasets.core.download import DownloadConfig# 指定数据存储路径
data_dir = "/path/to/data"# 创建 Caltech101 数据集构建器
dataset_builder = tfds.builder("caltech101:3.*.*", data_dir=data_dir)# 定义下载配置
config = DownloadConfig(extract_dir='/tmp/tfds_extract',download_mode='reuse_dataset_if_exists'
)# 下载并准备数据集
dataset_builder.download_and_prepare(download_config=config)# 加载数据集
dataset = dataset_builder.as_dataset(split='train')

6. 总结

TensorFlow Datasets 是一个强大的数据集处理工具,提供了简单一致的接口来下载、预处理和加载数据集。通过使用 tfds.builderdownload_and_prepare,您可以轻松地自动化数据集的处理过程,减少了手动处理数据的繁琐工作。TFDS 支持丰富的数据集库,并且可以通过灵活的可选参数来自定义数据下载和预处理过程,非常适合快速原型开发和大规模模型训练。

如果您在机器学习项目中需要标准化数据集,TFDS 将是一个不可或缺的工具。


hello,我是 是Yu欸 。如果你喜欢我的文章,欢迎三连给我鼓励和支持:👍点赞 📁 关注 💬评论,我会给大家带来更多有用有趣的文章。
原文链接 👉 ,⚡️更新更及时。

欢迎大家添加好友交流。


http://www.ppmy.cn/ops/128258.html

相关文章

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-18

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-18 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-18目录1. On the Reliability of Large Language Models to Misinformed and Demographically-Informed Prompts2. SafeLLM: Dom…

限流是什么?如何限流?怎么限流?

概述 什么是限流 对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机 为什么要限流 因为互联网系统通常都要面对大并发大流量的请求,在突发情况下(最常见的场景就是秒杀、抢购),瞬时大流量会直接将系统打垮,无法…

【硬件篇】k8s云原生开发要求

k8s云原生开发对硬件有一定要求。CPU方面,建议至少配备2个逻辑核心,高性能CPU更佳。内存至少4GB,但8GB或更高更推荐。存储需至少20-30GB可用空间,SSD提升IO性能。网络要求稳定,建议使用私有网络VPC,并配置与…

java-实例化一个List,然后添加数据的方法详解

在Java中,实例化一个 List 并向其中添加数据非常简单。List 是一个接口,因此我们通常使用它的常见实现类 ArrayList 或 LinkedList。以下是一些常见的操作方法: ### 1. 使用 ArrayList 实例化并添加数据 java import java.util.ArrayList; …

玫瑰花HTML源码

HTML源码 <pre id"tiresult" style"font-size: 9px; background-color: #000000; font-weight: bold; padding: 4px 5px; --fs: 9px;"><b style"color:#000000">0010000100000111101110110111100010000100000100001010111111100110…

NORDIC NPM1300是一款高度集成的电源管理集成电路

nPM1300是一款高度集成的电源管理集成电路(PMIC)&#xff0c;适用于可充电应用。它设计用于与nRF52、nRF53或 nRF54系列系统芯片(SoC)和nRF91系列系统封装(SiP)兼容&#xff0c;用于开发低功耗无线解决方案。 nPM1300 具有几个可以通过专用组件实现的电源和系统管理功能。通过…

【Qt】控件——Qt控件的介绍、QWidget的介绍、QWidget的属性、QWidget的函数

文章目录 Qt1. 控件的概念2. QWidgetenabledgeometrywindowTitlewindowIconwindowOpacitycursorfonttoolTiptoolTipDuringstyleSheet Qt 1. 控件的概念 Widget 是 Qt 中的核心概念。英文原义是 “小部件”&#xff0c;我们此处也把它翻译为 “控件”。控件是构成一个图形化界面…

长城坦克正式公布全新越野架构Hi4-Z,开启越野新时代

10月22日&#xff0c;“何为越野”长城坦克秋季技术发布会在中国虎克之路落下帷幕。本次发布会坦克品牌再添全新越野新能源架构&#xff0c;正式发布纵置双电机混联架构——Hi4-Z。 发布会上&#xff0c;长城汽车还首次公开了越野分级企业标准&#xff0c;为用户提供选车参考&…