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

【标准化数据集】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 用于根据数据集名称创建一个数据集构建器对象。这个构建器对象可以控制数据集的下载、预处理和加载。

示例:
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 格式。

示例:
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 下载数据。
示例:自定义下载路径和下载模式
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:是否注册文件校验和。
示例:
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 数据集:

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.mzph.cn/bicheng/57777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大数据学习 | Zookeeper】Zookeeper的选举机制

zookeeper的选举机制分为第一次启动和非第一次启动两种情况。 1. 选举机制 - > 第一次启动 (1)服务器1启动,发起一次选举。服务器1投自己一票。此时服务器1票数一票,不够半数以上(3票),选举无法完成,服务器1状态保持为 LOOKIN…

STM32之EC800K 4G模块驱动

1.EC800K简介 EC800K,特别是EC800K-CN,是移远通信专为M2M(机器对机器)和IoT(物联网)领域而设计的超小尺寸LTE Cat 1无线通信模块。EC800K-CN作为一款专为M2M和IoT领域设计的LTE Cat 1无线通信模块&#xff…

w~视觉~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12320868 #xx1 基于mxnet的训练代码迁移到pytorch上和 在yolov5的代码基础上验证了一些目标检测的想法一起发了 在迁移mxnet训练代码的时候,很长一段时间结果都无法对齐,于是我不得不又重新认真的读…

Flutter Column组件实战案例

In this section, we’ll explore the Column widget, a fundamental tool for arranging widgets vertically in Flutter. We’ll dive into its functionality and guide you through using it effectively to create well-organized and visually appealing layouts. 在本节…

UE5 第一人称示例代码阅读0 UEnhancedInputComponent

UEnhancedInputComponent使用流程 我的总结示例分析firstthenand thenfinally&代码关于键盘输入XYZ 我的总结 这个东西是一个对输入进行控制的系统,看了一下第一人称例子里,算是看明白了,但是感觉这东西使用起来有点绕,特此梳…

语言模型微调:提升语言Agent性能的新方向

人工智能咨询培训老师叶梓 转载标明出处 大多数语言Agent依赖于少量样本提示技术(few-shot prompting)和现成的语言模型。这些模型在作为Agent使用时,如生成动作或自我评估,通常表现不佳,且鲁棒性差。 论文《FIREACT…

随机抽取学号

idea 配置 抽学号 浏览器 提交一个100 以内的整数。,后端接受后,根据提供的整数,产生 100 以内的 随机数,返回给浏览器? 前端:提供 随机数范围 ,病发送请求后端:处理随机数的产生&…

【电机应用】变频器控制——变频水泵、变频空调

【电机应用】变频器控制——变频水泵、变频空调 文章目录 [TOC](文章目录) 前言一、变频器1、变频器的组成2、变频器的工作原理3、变频器常用算法 二、变频器的应用场景1、变频水泵2、变频空调 三、参考文献总结 前言 使用工具: 提示:以下是本篇文章正文…

Android 原生开发与Harmony原生开发浅析

Android系统 基于Linux ,架构如下 底层 (Linux )> Native ( C层) > FrameWork层 (SystemService) > 系统应用 (闹钟/日历等) 从Android发版1.0开始到现在15,经历了大大小小的变革 从Android6.0以下是个分水岭,6.0之前权限都是直接卸载Manifest中配置 6.0开始 则分普…

Matlab|基于氢储能的热电联供型微电网优化调度方法

目录 1 主要内容 模型求解流程 2 部分程序 3 程序结果 日前调度 日内调度 4 下载链接 1 主要内容 该程序复现《基于氢储能的热电联供型微电网优化调度方法》,针对质子交换膜燃料电池和电解槽的热电联供特性,为避免氢能系统的热能浪费并进一步提高…

k8s 综合项目笔记

综述 这篇笔记主要是为了记录下自己写 k8s 综合项目的过程。 由于自己之前已经写过简单的开发和运维项目,所以这里就结合一下,在搭建 k8s 集群后安装运维常用服务,比如 ansible 和 prometheus,用 NFS 实现数据存储同步&#xff0c…

Windwos下Docker下载安装centos7.6

操作步骤: 1.打开docker软件进入到DockerHub页面搜索contos镜像 2.在终端通过命令获取镜像并创建容器运行 docker run -itd --name test_centos7.6 centos:7.6.1810 test_centos7.6表示容器的名称 centos:7.6.1810表示镜像的名称,如果镜像不存在会默认拉…

网络层知识点总结4

目录 前言 一、什么是NAT?什么是NAPT?NAT的优点和缺点有哪些?NAPT有哪些特点? 二、建议IPv6协议没有首部检验和。这样做的优缺点是什么? 三、当使用IPv6时,协议ARP是否需要改变?如果需要改变…

ArcGIS计算多个面要素范围内栅格数据各数值的面积

本文介绍在ArcMap软件中,基于面积制表工具(也就是Tabulate Area工具),基于1个面要素数据集与1个栅格数据,计算每一个面要素中各栅格数据分布面积的方法。 首先,来看一下本文的需求。现有一个矢量面的要素集…

Springboot整合原生ES依赖

前言 Springboot整合依赖大概有三种方式: es原生依赖:elasticsearch-rest-high-level-clientSpring Data ElasticsearchEasy-es 三者的区别 1. Elasticsearch Rest High Level Client 简介: 这是官方提供的 Elasticsearch 客户端,支持…

小问题解决方法汇总(2024.10.24水个勋章)

问题1:”因为在系统上禁止运行脚本“ 我们在使用命令行时经常遇到类似文章这样的提示,或者是如下截图中显示的那样: 仅需要在“管理员权限下的Powershell”中输入下面的命令即可解决: set-ExecutionPolicy RemoteSigned 输入命…

【数据分享】全国科技-产品质量国家监督抽查(1995-2021年)

数据介绍 一级标题指标名称单位科技国家监督抽查产品种类种科技国家监督抽查食品种类种科技国家监督抽查日用消费品种类种科技国家监督抽查建筑与装饰装修材料种类种科技国家监督抽查农业生产资料种类种科技国家监督抽查工业生产资料种类种科技国家监督抽查企业家科技国家监督抽…

软工毕设开题建议

文章目录 🚩 1 前言1.1 选题注意事项1.1.1 难度怎么把控?1.1.2 题目名称怎么取? 1.2 开题选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢? 🚩2 选题概览🚩 3 项目概览题目1 : 深度学习社…

一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)

1. 背景介绍 如果你拿到了两台8卡A100的机器(做梦),你的导师让你学习部署并且训练不同尺寸的大模型,并且写一个说明文档。你意识到,你最需要学习的就是关于分布式训练的知识,因为你可是第一次接触这么多卡…

【数据仓库】数据仓库面试题

简单整理了一下题目和答案,希望对大家有所帮助。 第一面:基础技术与概念 什么是ETL?请解释ETL过程中的每个步骤。 ETL是Extract, Transform, Load的缩写,用于描述将数据从源系统提取、转换为适合分析的形式、最后加载到目标系统的…