【深度学习代码调试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 tfds

data_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 DownloadConfig

config = 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欸 。如果你喜欢我的文章,欢迎三连给我鼓励和支持:👍点赞 📁 关注 💬评论,我会给大家带来更多有用有趣的文章。
原文链接 👉 ,⚡️更新更及时。

欢迎大家添加好友交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/900264.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FPGA实现PCIE视频采集转USB3.0输出,基于XDMA+FT601架构,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的PCIE方案本博已有的USB通信方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频PCIE视频采集QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存FT601功能和硬件电路FT601读时序解读FT601写时序解读U…

【源码+文档】基于JavaWeb的村民健康管理平台【提供源码+答辩PPT+参考文档+项目部署】

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

未来医疗:大语言模型如何改变临床实践、研究和教育|文献精析·24-10-23

小罗碎碎念 这篇文章探讨了大型语言模型在医学领域的潜在应用和挑战,并讨论了它们在临床实践、医学研究和医学教育中的未来发展。 姓名单位名称(中文)Jan Clusmann德国德累斯顿工业大学埃尔朗根弗雷斯尼乌斯中心数字化健康研究所Jakob Nikola…

光纤传感器比传统传感器强在哪?——以大坝监测为例

应用介绍 大坝安全监测中心经常对当前工程中的大坝进行检查, 以确保水电站的安全运行。 大坝原有的观测模式是传感器加上人工观测模式,多数传感器经过多年运行后逐渐老化,出现测点损伤,且精度无法与现有光纤传输传感器相比,受现…

Django+Vue全栈开发项目入门(一)

Vue项目搭建过程 1、使用脚手架工具搭建项目 2、准备静态资源 3、调整生成项目结构 使用脚手架工具搭建项目 网络请求库axios Axios是一个基于Promise的HTTP库,适用于浏览器和node.js环境,用于发送网络请求。 特点 跨平台性:Axios既可…

Unity Apple Vision Pro 保姆级开发教程-环境配置、导入 PolySpatial 案例、程序发布到设备

视频教程 Unity 环境配置、导入 PolySpatial 案例、程序发布到设备 Unity Vision Pro 中文课堂教程地址: Unity3D Vision Pro 开发教程【保姆级】 | Unity 中文课堂 教程说明 这期教程我将介绍使用 Unity 开发 Apple Vision Pro 应用所需要的 Unity 环境配置&…

python实现投影仪自动对焦

这是一款投影仪,它带有对焦摄像头 它是如何自动对焦的呢? 我们先看一下对焦算法展示效果 说明:左侧是原视频,右侧是对调焦后的视频帧展示,如果下一帧视频比当前帧清晰就会显示下一帧,否则,还是显示当前帧,直至找到更清晰的帧 原理说明: 在投影仪上对焦摄像头就会实…

CDP和数据仓库怎么选?

一、CDP 是什么? 1.定义: CDP 全称是Customer Data Platform(客户数据平台)。是一种营销技术工具,它能够将来自不同渠道和系统(如网站、移动应用、客户服务系统、营销自动化平台、社交媒体等)…

C#PropertyGrid下拉选择数据报错

1、问题点--PropertyGrid下拉框报错 PropertyGrid:属性窗口:滚轮选择或者手动输入不报错,下拉框选择报错 属性值无效:类型“System:String”的对象无法转化为类型“System:Int32” PropertyGrid:属性窗口:…

论文笔记:SIBO: A Simple Booster for Parameter-Efficient Fine-Tuning

ACL 2024 1 intro 基于 Transformer 的大模型一般都有很多层 在广泛采用的 PEFT 技术(包括 Adapters 和 LoRA)中,尤其是在深层中,也存在过度平滑现象(即token之间的相似度很高)论文评估了同一语句中 toke…

【Linux学习】(3)Linux的基本指令操作

前言 配置Xshell登录远程服务器Linux的基本指令——man、cp、mv、alias&which、cat&more&less、head&tail、date、cal、find、grep、zip&tar、bc、unameLinux常用热键 一、配置Xshell登录远程服务器 以前我们登录使用指令: ssh 用户名你的公网…

华为云容器引擎(CCE):赋能企业云原生转型

在当今数字化时代,企业面临着日益复杂的应用部署和管理挑战。为了解决这些问题,容器技术应运而生,成为云原生架构的核心。华为云容器引擎(CCE)作为一款全面的容器管理解决方案,旨在帮助企业实现高效、灵活的…

Redis 安装部署与常用命令

目录 一、关系数据库与非关系型数据库 1.1 关系型数据库 1.2 非关系型数据库 1.3关系型数据库和非关系型数据库区别 (1)数据存储方式不同 (2)扩展方式不同 (3)对事务性的支持不同 1.4 非关系型数据…

腾讯推出ima.copilot智能工作台产品 由混元大模型提供技术支持

腾讯公司近期推出了一款名为ima.copilot(简称ima)的智能工作台产品,它由腾讯混元大模型提供技术支持。这款产品旨在通过其会思考的知识库,为用户开启搜读写的新体验。ima.copilot的核心功能包括知识获取、打造专属知识库以及智能写…

【算法】递归系列:递归初介绍,练习:231.2 的幂、

目录 一、理解递归 1、什么是递归? 2、为什么会使用递归? 3、递归使用的场景? 4、那么如何写出递归解法? 二、实践 231. 2的幂 1.函数头的设计 2.只关心某一个子问题是如何解决的 ->函数体的书写 3.注意一下递归函数的出…

个人品牌塑造与商业增长的加速器:开源AI智能名片2+1链动模式S2B2C商城小程序源码的应用研究

摘要:本文旨在深入探讨个人品牌塑造与商业增长过程中的核心要素,特别是“开源AI智能名片21链动模式S2B2C商城小程序源码”在提升品牌影响力、吸引潜在客户、促进团队协作及推动商业增长方面的具体应用与显著成效。通过详细分析一位微商从业者的实际案例&…

零代码快速开发智能体 |甘肃旅游通

在互联网信息爆炸的时代,寻找一处让人心动的旅游胜地往往需要花费大量的时间和精力。而今天,我要向大家介绍一款能够帮助你轻松规划甘肃之行的智能体——“甘肃旅游通”。这款智能体通过低代码开发,集合了丰富的旅游信息和个性化推荐功能&…

4种鼓励创业创新的方法

随着市场趋于饱和,许多企业,尤其是初创企业,很难在竞争中保持领先地位。技术为企业彻底改变其营销和管理策略铺平了道路。另一个经过实践检验的成功渗透特定市场的方法是在办公室内部激发创新,从员工到品牌皆如此。 那么究竟如何…

Ajax笔记

介绍 Ajax是一种网页开发技术,全称是Asynchronous JavaScript and XML(异步JavaScript和XML)。作用如下: 数据交换:可以通过Ajax给服务器发送请求,并获取服务器响应的数据。即前端动态的发送Ajax到服务器端…

秦时明月2搭建笔记

1.具体配置 数据库不修改,如果修改了,gm那边也要 2.数据库 3.上传配置文件出现问题 参考:对于测试时,错误信息 Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large-CSDN博客 4.启动tomcat&#x…