Tensorflow2.0之经典数据集加载

TensorFlow数据集加载之DataSets使用方法详解与实例 TensorFlow的tf.data模块提供了DataSets类,这个类用于创建和操作数据集。DataSets类可用于构建输入数据流水线,包括数据的预处理、批处理和迭代等操作。通过使用DataSets类,我们可以方便地将数据加载到模型中进行训练或测试。本文详细介绍了如何使用TensorFlow的DataSets类加载数据。通过DataSets类,我们可以方便地将数据转换为TensorFlow可用的数据集格式,并进行各种数据集的转换和操作。 阅读详情

Tensorflow2.0之经典数据集加载

常用数据集

在 TensorFlow 中,keras.datasets 模块提供了常用经典数据集的自动下载、管理、加载与转换功能,并且提供了tf.data.Dataset 数据集对象,方便实现多线程(Multi-thread),预处理(Preprocess),随机打散(Shuffle)和批训练(Train on batch)等常用数据集功能。

对于常用的数据集,如:

❑ Boston Housing 波士顿房价趋势数据集,用于回归模型训练与测试
❑ CIFAR10/100 真实图片数据集,用于图片分类任务
❑ MNIST/Fashion_MNIST 手写数字图片数据集,用于图片分类任务
❑ IMDB 情感分类任务数据集

这些数据集在机器学习、深度学习的研究和学习中使用的非常频繁。对于新提出的算法,一般优先在简单的数据集上面测试,再尝试迁移到更大规模、更复杂的数据集上。通过 datasets.xxx.load_data()即可实现经典数据集的自动加载,其中xxx 代表具体的数据集名称。TensorFlow 会默认将数据缓存在用户目录下的.keras/datasets 文件夹,如图 5.6所示,用户不需要关心数据集是如何保存的。如果当前数据集不在缓存中,则会自动从网站下载和解压,加载;如果已经在缓存中,自动完成加载:

In [66]:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import datasets # 导入经典数据集加载模块
# 加载MNIST 数据集
(x, y), (x_test, y_test) = datasets.mnist.load_data()
print('x:', x.shape, 'y:', y.shape, 'x test:', x_test.shape, 'y test:',
y_test)
Out [66]:
x: (60000, 28, 28) y: (60000,) x test: (10000, 28, 28) y test: [7 2 1 ... 4
5 6]

通过load_data()会返回相应格式的数据,对于图片数据集MNIST, CIFAR10 等,会返回2个tuple,第一个tuple 保存了用于训练的数据x,y 训练集对象;第2 个tuple 则保存了用于测试的数据x_test,y_test 测试集对象,所有的数据都用Numpy.array 容器承载。

数据加载进入内存后,需要转换成Dataset 对象,以利用TensorFlow 提供的各种便捷功能。通过Dataset.from_tensor_slices 可以将训练部分的数据图片x 和标签y 都转换成Dataset 对象:
train_db = tf.data.Dataset.from_tensor_slices((x, y))
将数据转换成Dataset 对象后,一般需要再添加一系列的数据集标准处理步骤,如随机打散,预处理,按批装载等

随机打散

通过 Dataset.shuffle(buffer_size)工具可以设置Dataset 对象随机打散数据之间的顺序,防止
每次训练时数据按固定顺序产生,从而使得模型尝试“记忆”住标签信息:

其中buffer_size 指定缓冲池的大小,一般设置为一个较大的参数即可。通过Dataset 提供的这些工具函数会返回新的Dataset 对象,可以通过
db = db. shuffle(). step2(). step3. ()
方式完成所有的数据处理步骤,实现起来非常方便。

批训练

为了利用显卡的并行计算能力,一般在网络的计算过程中会同时计算多个样本,我们把这种训练方式叫做批训练,其中样本的数量叫做batch size。为了一次能够从Dataset 中产生batch size 数量的样本,需要设置Dataset 为批训练方式:
train_db = train_db.batch(128)
其中128 为batch size 参数,即一次并行计算128 个样本的数据。Batch size 一般根据用户的GPU 显存资源来设置,当显存不足时,可以适量减少batch size 来减少算法的显存使用量。

预处理

从 keras.datasets 中加载的数据集的格式大部分情况都不能满足模型的输入要求,因此
需要根据用户的逻辑自己实现预处理函数。Dataset 对象通过提供map(func)工具函数可以
非常方便地调用用户自定义的预处理逻辑,它实现在func 函数里:

预处理函数实现在preprocess 函数中,传入函数引用即可

train_db = train_db.map(preprocess)
考虑 MNIST 手写数字图片,从keras.datasets 中经.batch()后加载的图片x shape 为[𝑏, 28,28],像素使用0~255 的整形表示;标注shape 为[𝑏],即采样的数字编码方式。实际的神经网络输入,一般需要将图片数据标准化到[0,1]或[−1,1]等0 附近区间,同时根据网络的设置,需要将shape [28,28] 的输入Reshape 为合法的格式;对于标注信息,可以选择在预处理时进行one-hot 编码,也可以在计算误差时进行one-hot 编码。

我们可以将MNIST 图片数据映射到𝑥 ∈ [0,1]区间,视图调整为[𝑏, 28 ∗ 28];对于标注y,我们选择在预处理函数里面进行one-hot 编码:

def preprocess(x, y): # 自定义的预处理函数
	# 调用此函数时会自动传入x,y 对象,shape 为[b, 28, 28], [b]
	# 标准化到0~1
	x = tf.cast(x, dtype=tf.float32) / 255.
	x = tf.reshape(x, [-1, 28*28]) # 打平
	y = tf.cast(y, dtype=tf.int32) # 转成整形张量
	y = tf.one_hot(y, depth=10) # one-hot 编码
	# 返回的x,y 将替换传入的x,y 参数,从而实现数据的预处理功能
	return x,y

循环训练

对于 Dataset 对象,在使用时可以通过
for step, (x,y) in enumerate(train_db): # 迭代数据集对象,带step 参数
或
for x,y in train_db: # 迭代数据集对象
方式进行迭代,每次返回的x,y 对象即为批量样本和标签,当对train_db 的所有样本完成一次迭代后,for 循环终止退出。我们一般把完成一个batch 的数据训练,叫做一个step;通过多个step 来完成整个训练集的一次迭代,叫做一个epoch。在实际训练时,通常需要对数据集迭代多个epoch 才能取得较好地训练效果:

for epoch in range(20): # 训练Epoch 数
	for step, (x,y) in enumerate(train_db): # 迭代Step 数
		# training...

此外,也可以通过设置:
train_db = train_db.repeat(20) # 数据集跌打20 遍才终止使得for x,y in train_db 循环迭代20 个epoch 才会退出。不管使用上述哪种方式,都能取得一样的效果。

〖TensorFlow2.0笔记23〗TensorFlow2.0学习笔记总结! Tensorflow2.0全套课程学习笔记! 阅读详情

相关推荐

使用SpringBoot+Vue3开发项目(1)---- 设计用户注册和登录的接口及页面

本文基于黑马大事件项目介绍如何使用SpringBoot+Vue3来实现前后端联调的登录与注册操作。

记得开心一点嘛的博客 3643

tensorflow之dataset详解

dataset是什么? Dataset可以看作是相同类型“元素”的有序 列表。在实际使用时,单个“元素”可以是向量,也可以是字符串、图片,甚至是tuple或者dict。Dataset是google点名建议的读取数据的方式,所以在tf使用中有很重要的地位。 这个描述其实已经描述了dataset,他是一个可迭代对象,而且是有序的,而且每个元素的类型相同。在工作中为了方便理解,我一般把它看作java中的List<T>,即声明了泛型的有序集合List。从python的角度看的话,就是规定了所有元素类

kangshuangzhu的博客 9138

STM32C8T6实战:用PID算法搞定超级电容的10W无线恒功率充电(附代码避坑)

本文详细介绍了如何使用STM32C8T6和PID算法实现超级电容的10W无线恒功率充电。通过优化硬件设计、动态调整PID参数以及三重滤波技术,解决了超级电容充电过程中的功率尖峰和效率问题。附有代码示例和调试经验,帮助开发者快速实现高效稳定的无线充电方案。

weixin_29190169的博客 406

tensorflow 2.0 :数据加载

tensorflow 2.0:数据加载 1.对于一些小型常用的数据集,TensorFlow有相关的API可以调用——keras.datasets 其中有以下经典数据集 1.boston housing 波士顿房价 2.mnist/fasion mnist 手写数字集/时髦品集 3.cifar10/100 物象分类 4.imdb 2.使用 tf....

464

hfss仿真软件入门教程

hfss仿真软件入门教程 1.模型建立 1.1在project种选择insert hfss design 1.2.在hfss-》solution type 中选择modal 1.3.在moderler-》中选择units 设置单温为mm 1.4进行画图操作,这里为提高效率直接导入一个已经画好的cad图。使用modeler-》import 2.设置端口 2.1在更改模型中的材料 选择需要更改材料...

xunshui2007的博客 3万+

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

A20802013的博客 2万+

TensorFlow(2)-tf.data.Dataset训练数据集构建

tensorflow 数据载入1. tf.data.Dataset2. dataset 创建数据集的方式2.1 tf.data.Dataset.from_tensor_slices()2.2 tf.data.TextLineDataset()2.3 tf.data.FixedLengthRecordDataset()2.4 tf.data.TFRecordDataset()3. dateset 迭代操作iterator3.1 make_one_shot_iterator()3.2 make_initiali

sinat_40624829的博客 5159

银河麒麟桌面系统批量交付:封装自动化ISO镜像,百台装机效率提升10倍

麒麟桌面系统自动化ISO镜像定制摘要 本文详细介绍麒麟桌面版ISO安装镜像的定制方法,通过修改系统文件实现自动化安装部署。主要内容包括:1) 挂载原版ISO并提取文件;2) 使用unsquashfs解压系统文件进行定制化修改,包括添加系统标记配置;3) 配置ky-installer.cfg自动应答文件,设置安装参数如用户名、密码、分区方案等;4) 修改grub引导配置启用自动安装模式。该流程支持磁盘加密、自定义分区、自动登录等功能,生成的定制镜像可满足批量部署需求,显著提升系统安装效率。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 1508

OpenPose -tensorflow代码解析(2)—— 多进程数据读取 dataset.py

from easydict import EasyDict as edict print("read config ====================================") cfg = edict() cfg.OP = edict() # Set the class name cfg.OP.strides = 8 cfg.OP.WH_ratio .

magic_ll的博客 1658

Android PMS——概述(一)

PMS(Package Manager Service)是 Android 操作系统的一个重要组件,它负责管理应用程序的包信息以及与应用程序的安装、卸载、权限控制等相关功能,确保应用程序的安全性和稳定性。 Android PMS 负责维护一个应用程序包的清单信息,该清单是一个 XML 文件,包含应用程序的各种元数据,例如应用程序的包名、版本号、权限要求、组件信息等。PMS通过访问该清单文件来获取应用程序的信息。 此外,Android PMS 还负责应用程序的安装和卸载。在安装应用

小旭的专栏 1668

Simulink开发项1000例实战专栏--实例148:构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块

电动汽车的动力电池是其核心部件,而电池的健康状态(State of Health, SOH)直接影响车辆的续航能力和使用寿命。SOH通常定义为当前电池容量与初始容量的比值,用百分比表示。通过基于MATLAB/Simulink平台的SOH评估仿真,可以实时监测电池的退化情况,并为电池管理系统(BMS)提供决策依据。本项目旨在构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块,并通过仿真验证SOH评估的准确性。

xiaoheshang_123的博客 342

tensorflow2.0加载经典数据集

Dandelion_2的博客 659

Google 二次签名 导致 Facebook , Google 登录失败

google 授权登录

xq610928的博客 1957

【TensorFlow2.0】经典数据集加载与数据集处理

  利用tensorflow提供的工具便捷的加载经典数据集。自定义的数据集以后再讲。   tensorflow中keras.Datasets数据集对象,方便实现多线程、预处理、随机打散、批训练等常用数据集的功能。   常用经典数据集:   (1)Boston housing:波士顿房价趋势数据集   (2)CIFAR10/100:真实图片数据集,用于图片分类   (3)MINIST/Fashion...

qq_36926037的博客 2652

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Tensorflow2.0:加载与识别经典数据集MINIST

一 实现思路 1. 加载 MNIST 数据集,得到训练集与测试集 **2. 将训练集与测试集转换为DataSet对象 3. 将数据顺序打散 避免每次读取数据顺序相同,使得模型记住训练集的一些特点,降低模型泛化能力。 4. 设置批训练 从训练集总数中随机抽取batchsize个样本,来进行模型训练,相比于使用所用样本构建模型,批训练花费的时间更少,计算效率更高。每训练一个次,就叫一个step,当经历...

Docpark 2769

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【TensorFlow2.0】keras高层接口之经典数据集加载、网络层、网络容器、模型装配、模型训练、模型测试、模型保存和加载

  keras是一个主要由Python语言开发的开源神经网络计算库,被设计为高度模块化和易扩展的高层神经网络接口,使用户不需要过多的专业知识就可以简洁、快速地完成模型的搭建与训练。Keras库分为前端和后端,其中后端是调用现有的神经网络学习框架实现底层运算,如theano、CNTK、tensorflow等,前端接口是Keras抽象过的一组统一接口函数。   Keras与tensorflow的关系:...

qq_36926037的博客 977

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

tensorflow2.0数据加载

前言 这个是我学习网易云课堂上对于tensorflow2.0数据加载内容的笔记 小型的经典数据通过keras.datasets就可以使用 keras.datasets可以加载的数据集 boston houseing mnist/fashion mnist cifar10/100 imdb tf.data.Dataset.from_tensor_slices ...

qq_42001765的博客 880

【TensorFlow深度学习】加载经典数据集MNIST的实战步骤

通过上述步骤,成功地加载了MNIST数据集,进行了必要的数据预处理,并将其转换为适合深度学习训练的对象。这些准备工作为后续的模型搭建和训练奠定了坚实的基础。实践证明,良好的数据准备是深度学习项目成功的关键。

沐风—云端行者 2542

深度学习,教你使用Tensorflow2.0识别手写数字(上)

课前知识 新版的Tensorflow2.0与原版的Tensorflow有着较大的更新和变动,Tensorflow2.0将Keras作为默认高级API,并舍弃掉其它的API。此外,另外较大的变动的是将用于机器学习的实验和研究平台 Eager execution 设置为默认优先模式, 这样设置的好处是我们不用再像以前一样预先定义静态图,任何的运算在调用之后都可以直接执行。与原版相比,Tenso...

微信公众号:码奋 730

Tensorflow 2.0笔记 -第五章-经典数据集使用

Tensorflow 2.0笔记 -第五章-经典数据集使用 以下笔记都来自于龙龙老师的龙书《Tensorflow深度学习》 1.经典数据集 Boston Housing 波士顿房价数据集 回归模型 CIFAR10/100 真实图片数据集 图片分类 MNIST 手写数字图片数据集 图片分类 IMDB 情感分类数据集 文本分类任务 2.数据加载 import tensorflow as tf from tensorflow.keras import datasets # 通过

liuyunsen的博客 232

20210329 LeNet-5数字识别 TensorFlow2.0 MINIST数据集

LeNet-5 数字识别 TensorFlow LeNet-5 由两个卷积层、两个池化层和两个全连接层组成,每个卷积层使用尺寸为5×5(每个滤波器有1个通道)的滤波器,第一层中有6个滤波 器,第 二 层 中 有 16 个 滤 波 器。在 每 次 卷 积 之后,采用 Sigmoid函数进行激活,并且使用2×2的平均池化进行池化操作。 # Implementation of LeNet-5 in keras # [LeCun et al., 1998. Gradient based learning app

weixin_44583590的博客 392

Tensorflow学习笔记六——全连接神经网络的经典实战

6.1 经典的MINST数据集 ##tensorflow1.0 load mnist dataset from tensorflow.examples.tutorials.mnist import input_data mnist=input_data.read_data_sets("MNIST_data",one_hot=Ture) print("Traing daya anf label size:") print(mnist.train.images.shape,mnist.train.labels.

weixin_43941538的博客 473

计算机视觉两个入门数据集(mnist和fashion mnist)本地下载地址

1.计算机视觉经典数据集 1.mnist数据集 MNIST(Mixed National Institute of Standards andTechnology database)数据集大家可以说是耳熟能详。可以说是每个入门深度学习的人都会使用MNIST进行实验。作为领域内最早的一个大型数据集,MNIST于1998年由Yann LeCun等人设计构建。MNIST数据集包括60000个示例的训练集以及10000个示例的测试集,每个手写数字的大小均为28*28。在本书的前面一些章节,我们曾多次使用到了MN

weixin_41869644的博客 1666

tf2.0这些也重要(二)——高级知识

前一篇文章介绍了TensorFlow的基础知识,主要是张量的基本操作,这篇文章主要介绍有些张量的进阶操作,譬如合并、分割、范数统计、填充、限幅等。 2.1 合并与分割 2.1.1 合并 合并是指将多个张量,按照某一维度进行合并,称为一个张量。 合并还分为拼接和堆叠两种操作。 拼接在TensorFlow中用 tf.concat(tensor_list, axis) 实现。 a = tf.random.normal([4, 32, 32, 3]) b = tf.random.normal([3, 32, 32,

weixin_40935425的博客 923

Tensorflow2.0加载图片数据集的两种方式

在tensorflow2.0中加载图片数据集一般有两种方式,第一种是使用tf.keras中的ImageDataGenerator生成器,适合图片分类问题,简单但不灵活;第二种是使用tf.data.Dataset搭配tf.image中的一些图片处理方法,较为灵活。下面分别介绍一下。

weixin_43917574的博客 7809
上一篇: Tensorflow2.0之根据索引号收集数据
下一篇: Tensorflow2.0之Minist手写数字识别
AndSonder
博客等级 码龄7年 364粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值