tensorflow2.0 Dataset创建和使用

一、创建Dataset

# 可以接收一个numpy.ndarray、tuple、dict
dataset = tf.data.Dataset.from_tensor_slices(np.arange(10).reshape((5,2)))
dataset = tf.data.Dataset.from_tensor_slices(([1,2,3,4,5,6],[10,20,30,40,50,60]))
dataset = tf.data.Dataset.from_tensor_slices({"x":[1,2,3,4,5,6],"y":[10,20,30,40,50,60]})dataset = dataset.batch(3)
for batch in dataset:print(batch)

分别输出:

tf.Tensor(
[[0 1][2 3][4 5]], shape=(3, 2), dtype=int32)
tf.Tensor(
[[6 7][8 9]], shape=(2, 2), dtype=int32)
#------------------------------------------------------------------------(<tf.Tensor: shape=(3,), dtype=int32, numpy=array([1, 2, 3])>, <tf.Tensor: shape=(3,), dtype=int32, numpy=array([10, 20, 30])>)
(<tf.Tensor: shape=(3,), dtype=int32, numpy=array([4, 5, 6])>, <tf.Tensor: shape=(3,), dtype=int32, numpy=array([40, 50, 60])>)
#------------------------------------------------------------------------
{'x': <tf.Tensor: shape=(3,), dtype=int32, numpy=array([1, 2, 3])>, 'y': <tf.Tensor: shape=(3,), dtype=int32, numpy=array([10, 20, 30])>}
{'x': <tf.Tensor: shape=(3,), dtype=int32, numpy=array([4, 5, 6])>, 'y': <tf.Tensor: shape=(3,), dtype=int32, numpy=array([40, 50, 60])>}

二、数据预处理

1、map

def func(x, y):x = x/1y = y/10return x, ytrain_data = [1,2,3,4,5,6]
train_label = [10,20,30,40,50,60]
dataset = tf.data.Dataset.from_tensor_slices((train_data, train_label))
dataset = dataset .map(func)for x, y in dataset :print(x,y)

输出

tf.Tensor(1.0, shape=(), dtype=float64) tf.Tensor(1.0, shape=(), dtype=float64)
tf.Tensor(2.0, shape=(), dtype=float64) tf.Tensor(2.0, shape=(), dtype=float64)
tf.Tensor(3.0, shape=(), dtype=float64) tf.Tensor(3.0, shape=(), dtype=float64)
tf.Tensor(4.0, shape=(), dtype=float64) tf.Tensor(4.0, shape=(), dtype=float64)
tf.Tensor(5.0, shape=(), dtype=float64) tf.Tensor(5.0, shape=(), dtype=float64)
tf.Tensor(6.0, shape=(), dtype=float64) tf.Tensor(6.0, shape=(), dtype=float64)
dataset = dataset .map(map_func=func, num_parallel_calls=tf.data.experimental.AUTOTUNE)

num_parallel_calls:将数据加载与变换过程并行到多个CPU线程上
tf.data.experimental.AUTOTUNE:自动设置为最大的可用线程数

2、shuffle 和 batch

dataset = tf.data.Dataset.from_tensor_slices([1,2,3,4,5])
dataset = dataset.batch(2).shuffle(2) # 对batch进行shuffle,batch内部不shuffle
dataset = dataset.shuffle(2).batch(2) # 先将数据进行shuffle,再进行batch划分
for d in dataset:print(d)print("----------------------------")

结果1

tf.Tensor([1 2], shape=(2,), dtype=int32)
----------------------------
tf.Tensor([5], shape=(1,), dtype=int32)
----------------------------
tf.Tensor([3 4], shape=(2,), dtype=int32)
----------------------------

结果2

tf.Tensor([1 3], shape=(2,), dtype=int32)
----------------------------
tf.Tensor([2 4], shape=(2,), dtype=int32)
----------------------------
tf.Tensor([5], shape=(1,), dtype=int32)
----------------------------

3、repeat

dataset = tf.data.Dataset.from_tensor_slices([1,2])
dataset = dataset.repeat(2)
for d in dataset:print(d)

结果

tf.Tensor(1, shape=(), dtype=int32)
tf.Tensor(2, shape=(), dtype=int32)
tf.Tensor(1, shape=(), dtype=int32)
tf.Tensor(2, shape=(), dtype=int32)

三、并行化策略

dataset = dataset.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)

Dataset.prefetch() :让数据集对象 Dataset 在训练时预取出若干个元素,使得在 GPU 训练的同时 CPU 可以准备数据,从而提升训练流程的效率。

四、模型使用数据集

Keras 支持使用 tf.data.Dataset 直接作为输入。当调用 tf.keras.Model 的 fit() 和 evaluate() 方法时,可以将参数中的输入数据 x 指定为一个元素格式为 (输入数据, 标签数据) 的 Dataset ,并忽略掉参数中的标签数据 y 。

常规的 Keras 训练方式:

model.fit(x=train_data, y=train_label, epochs=num_epochs, batch_size=batch_size)

使用 tf.data.Dataset 训练方式:

model.fit(dataset, epochs=num_epochs)

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

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

相关文章

导师实验室对学生影响有多大?

读博士导师非常重要&#xff0c;比你们想象得还要更重要。一个优秀的导师不仅在科研帮上很多忙&#xff0c;而且让你懂得怎么做科研&#xff0c;更重要的他教会你怎么做一个合格的学者。 跟这种导师工作&#xff0c;你会发现科研其实是一件非常有趣的事情&#xff0c;它带来的乐…

论文浅尝 | 使用孪生BERT网络生成句子的嵌入表示

论文笔记整理&#xff1a;吴杨&#xff0c;浙江大学计算机学院&#xff0c;知识图谱、NLP方向。https://www.ctolib.com/https://arxiv.org/abs/1908.10084动机谷歌的 BERT 预训练模型&#xff0c;已经能够在两个句子的语义相似度匹配等需要输入一对句子的任务上取得了非常好的…

美团点评效果广告实验配置平台的设计与实现

一. 背景 效果广告的主要特点之一是可量化&#xff0c;即广告系统的所有业务指标都是可以计算并通过数字进行展示的。因此&#xff0c;可以通过业务指标来表示广告系统的迭代效果。那如何在全量上线前确认迭代的结果呢&#xff1f;通用的方法是采用AB实验&#xff08;如图1&…

LeetCode 832. 翻转图像(异或^)

文章目录1. 题目2. 解题1. 题目 给定一个二进制矩阵 A&#xff0c;我们想先水平翻转图像&#xff0c;然后反转图像并返回结果。 水平翻转图片就是将图片的每一行都进行翻转&#xff0c;即逆序。例如&#xff0c;水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。 反转图片的意思是图…

MVP模式在Android中的应用之图片展示选择功能的框架设计

前言&#xff1a;虽然安卓出现的时间比其它平台软件比较晚&#xff0c;但是在我们的安卓开发中&#xff0c;一样可以使用我们所熟知的设计模式来给它一个合理、完善的结构&#xff0c;这样&#xff0c;才可以使我们在平常开发的时候减少冗余代码的发生&#xff0c;真正的提高效…

2020年8个效率最高的爬虫框架

一些较为高效的Python爬虫框架。分享给大家。 1.Scrapy Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘&#xff0c;信息处理或存储历史数据等一系列的程序中。。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。 …

抑制过拟合之正则化与Dropout

避免过拟合&#xff1a; 1、增大数据集合 – 使用更多的数据&#xff0c;噪声点比减少&#xff08;减少数据扰动所造成的影响&#xff09; 2、减少数据特征 – 减少数据维度&#xff0c;高维空间密度小&#xff08;减少模型复杂度&#xff09; 3、正则化 / dropout / 数据增强…

谈谈神经网络的大规模训练优化

文 | 立交桥跳水冠军源 | 知乎大规模神经网络训练一般会涉及到几百个分布式节点同时工作&#xff0c;模型的参数量以及运算量往往很大&#xff0c;作者认为在这个task下当前的工作主要归结为以下三种&#xff1a;对通信本身的优化&#xff0c;神经网络训练通信的优化&#xff0…

LeetCode 1108. IP 地址无效化

文章目录1. 题目2. 解题1. 题目 给你一个有效的 IPv4 地址 address&#xff0c;返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址&#xff0c;其实就是用 “[.]” 代替了每个 “.”。 示例 1&#xff1a;输入&#xff1a;address "1.1.1.1" 输出&#xff1a;&…

Android NDK开发入门学习笔记(图文教程,极其详尽)

以前也简单用过JNI&#xff0c;但是只是简单用一下&#xff0c;好多都不明白。最近在看源码部分&#xff0c;有涉及到JNI调用的&#xff0c;所以这次打算彻底把它搞定。 先普及一下JNI的调用关系&#xff1a;JAVA------------------------>JNI----------------------------…

论文浅尝 | 利用问题生成提升知识图谱问答

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生&#xff0c;研究方向为知识库问答。来源&#xff1a;NLPCC2019链接&#xff1a;http://tcci.ccf.org.cn/conference/2019/papers/183.pdf本文提出了一种利用问题生成提升知识图谱问答模型性能的方法&#xff08;一个…

顶会论文:基于神经网络StarNet的行人轨迹交互预测算法

1.背景 民以食为天&#xff0c;如何提升超大规模配送网络的整体配送效率&#xff0c;改善数亿消费者在”吃“方面的体验&#xff0c;是一项极具挑战的技术难题。面向未来&#xff0c;美团正在积极研发无人配送机器人&#xff0c;建立无人配送开放平台&#xff0c;与产学研各方共…

python操作mysql数据库实现增删改查

python操作mysql数据库实现增删改查 Python 标准数据库接口为 Python DB-API&#xff0c;Python DB-API为开发人员提供了数据库应用编程接口。 Python 数据库接口支持非常多的数据库&#xff0c;你可以选择适合你项目的数据库&#xff1a; GadFlymSQLMySQLPostgreSQLMicrosoft …

tf2: Gradients do not exist for variables when minimizing the loss.

WARNING:tensorflow:Gradients do not exist for variables when minimizing the loss. 情况一 该变量没有参与最后loss的计算 &#xff08;1&#xff09;如果直接没有参与计算&#xff0c;其实很好就能找出来&#xff0c;删掉无用变量即可&#xff1b; &#xff08;2&#xff…

LeetCode 654. 最大二叉树(递归)

文章目录1. 题目2. 解题1. 题目 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。 左子树是通过数组中最大值左边部分构造出的最大二叉树。 右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给…

Probe:Android线上OOM问题定位组件

配送骑手端App是骑手用于完成配送履约的应用&#xff0c;帮助骑手完成接单、到店、取货及送达&#xff0c;提供各种不同的运力服务&#xff0c;也是整个外卖闭环中的重要节点。由于配送业务的特性&#xff0c;骑手App对于应用稳定性的要求非常高&#xff0c;体现App稳定性的一个…

Android中使用官方提供好的功能使用说明(比如系统图库获取),也作为延生学习的学习文档

这篇文章最核心的就是去学习如何学习Android&#xff0c;如何去使用Android文档。 我们一般在刚开始接触开发的时候&#xff0c;如果遇到无法解决的问题&#xff0c;常常会百度&#xff0c;或者google去寻找答案&#xff0c;比如有个需求是获取系统中的图片&#xff0c;你可能…

再介绍一篇Contrastive Self-supervised Learning综述论文

文 | 黄浴源 | 知乎之前已经介绍过三篇自监督学习的综述&#xff1a;《怎样缓解灾难性遗忘&#xff1f;持续学习最新综述三篇&#xff01;》。这是最近2020年10月arXiv上的又一篇论文"A Survey On Contrastive Self-supervised Learning"。论文地址&#xff1a;https…

GCN-Based User Representation Learning for Unifying Robust Recommendation and Fraudster Detection

GCN-Based User Representation Learning for Unifying Robust Recommendation and Fraudster Detection 点击率预测&#xff1a;其主要思想是根据用户的历史行为对一组未评级的项目进行评级预测&#xff0c;然后从预测评级最高的项目中选择个性化推荐。 欺诈检测&#xff1a;…

公开课 | 知识图谱构建与应用概述

本文转载自公众号&#xff1a;博文视点Broadview。 AI是新的生产力&#xff0c;知识图谱是AI进步的阶梯。随着近年来人工智能的进一步发展&#xff0c;知识图谱也取得了一系列新的进展&#xff0c;并在各个行业中落地应用。知识图谱的相关技术已经在搜索引擎、智能问答、…