Tensorflow学习笔记No.3
使用tf.data加载数据
tf.data是tensorflow2.0中加入的数据加载模块,是一个非常便捷的处理数据的模块。
这里简单介绍一些tf.data的使用方法。
1.加载tensorflow中自带的mnist数据并对数据进行一些简单的处理
1 (train_image, train_label), (test_image, test_label) = tf.keras.datasets.mnist.load_data()
2 train_image = train_image / 255
3 test_image = test_image / 255
2.使用tf.data.Dataset.from_tensor_slices()方法对数据进行切片处理
该函数是dataset核心函数之一,它的作用是把给定的元组、列表和张量等数据进行特征切片。切片的范围是从最外层维度开始的。如果有多个特征进行组合,那么一次切片是把每个组合的最外维度的数据切开,分成一组一组的。
1 ds_train_label = tf.data.Dataset.from_tensor_slices(train_label)
2 ds_train_label = tf.data.Dataset.from_tensor_slices(train_label)
3.使用tf.data.Dataset.zip()方法将image和label数据合并
tf.data.Dataset.zip()方法可将迭代对象中相对应(例如image对应label)的数据打包成一个元组,返回由这些元组组成的对象。
1 ds_train = tf.data.Dataset.zip((ds_train_image, ds_train_label))
这里ds_train中的数据就是由许多个(image, label)元组组成的。
事实上我们也可以直接把train_image与train_label进行合并,以元组的形式对train_image和train_label进行切片即可。
1 ds_trian = tf.data.Dataset.from_tensor_slices((train_image, train_label))
4.使用.shuffle().repeat().batch()方法对数据进行处理
1 ds_train = ds_train.shuffle(10000).repeat(count = 3).batch(64)
.shuffle()作用是将数据进行打乱操作,传入参数为buffer_size,改参数为设置“打乱缓存区大小”,也就是说程序会维持一个buffer_size大小的缓存,每次都会随机在这个缓存区抽取一定数量的数据。
.repeat()作用就是将数据重复使用多少次,参数是重复的次数,若无参数则无限重复。
.batch()作用是将数据打包成batch_size, 每batch_size个数据打包在一起作为一个epoch。
5.注意事项
在使用tf.data时,如果不设置数据的.repeat()的重复次数,数据会无限制重复,如果把这样的数据直接输入到神经网络中会导致内存不足程序无法终止等错误。此时,要在.fit()方法中加以限制。
1 history = model.fit(ds_train, epochs = 5, steps_per_epoch = step_per_epochs,
2 validation_data = ds_test, validation_steps = 10000 // 64
3 )
使用steps_per_epoch参数限制每个epochs的数据量。
使用validation_steps限制验证集中的数据量。
到这里tf.data的简单介绍就结束了,后续会更新tf.data中的更多内容。
Tensorflow学习笔记No.3的更多相关文章
- Tensorflow学习笔记2:About Session, Graph, Operation and Tensor
简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...
- Tensorflow学习笔记2019.01.22
tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...
- Tensorflow学习笔记2019.01.03
tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...
- TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]
I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...
- 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识
深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...
- 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别
深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...
- tensorflow学习笔记(4)-学习率
tensorflow学习笔记(4)-学习率 首先学习率如下图 所以在实际运用中我们会使用指数衰减的学习率 在tf中有这样一个函数 tf.train.exponential_decay(learning ...
- tensorflow学习笔记(3)前置数学知识
tensorflow学习笔记(3)前置数学知识 首先是神经元的模型 接下来是激励函数 神经网络的复杂度计算 层数:隐藏层+输出层 总参数=总的w+b 下图为2层 如下图 w为3*4+4个 b为4* ...
- tensorflow学习笔记(2)-反向传播
tensorflow学习笔记(2)-反向传播 反向传播是为了训练模型参数,在所有参数上使用梯度下降,让NN模型在的损失函数最小 损失函数:学过机器学习logistic回归都知道损失函数-就是预测值和真 ...
- tensorflow学习笔记(1)-基本语法和前向传播
tensorflow学习笔记(1) (1)tf中的图 图中就是一个计算图,一个计算过程. 图中的constant是个常量 计 ...
随机推荐
- 常用mac命令
~/.bash_profile 可以添加常用的一些命令别名alias unity="open -n /Applications/Unity/Unity.app"
- Winform TextBox 数据绑定空值校验问题
问题: using System; using System.ComponentModel.DataAnnotations; public class Cost { /// <summary&g ...
- windows-服务器-配置一个及多个-Apache-Tomcat
问题:如何在一台服务器上发布了几个Tomcat的系统???怎么配置环境变量?怎么设置Tomcat? 2020/8月更新,由于之前的java的环境变量有点绕,此次新加一个流程设计图 一.需求: 一台wi ...
- [BUUOJ记录] [GXYCTF2019]BabySQli
有点脑洞的题,题目不难,主要考察注入和联合查询的一个小特点 进入题目是一个登录框,看看源代码,在search.php文件中发现了这个 大写的字母和数字很明显是base32,先用base32解码一下,发 ...
- 你不知道的JavaScript笔记----对象
对象: 1.定义对象属性 属性描述符(也称为:数据描述符) Object.defineProperty(Object,PropertyName,{ value: 6, writable: true, ...
- 通过股票K线图来谈谈真正的技术和现实的技术
开局一张图 这是一张股票日线图,上面记载这近期每个交易日该股的开盘价,收盘价,最高价,最低价. 有兴趣的人可以估算下数据量和表的设计,似乎有点工作量.可这还只是一部分,你还可以获得每日分时数据,成交量 ...
- websocket劫持
WebSockets who is WebSockets? WebSockets是一个能够给单TCP连接提供全双工信道的HTML5特性. 它的持续性连接功能,使得构建B/S模式的实时应用成为可能. W ...
- AI研讨会直播:《人工智能开发前沿》实战系列公开课第1期
报名链接:https://www.slidestalk.com/m/276 活动背景 业务需求.数据.算法.算力等因素,决定人工智能技术走向产业落地面临各种挑战.博客园联合示说网以及产业内人工智能技术 ...
- JS实现串行请求
使用async和await var fn = async function(promiseArr) { for(let i = 0,len = arr.length; i<len; i++) { ...
- 二、loadrunner参数化连接数据库
2.连接sqlserver数据库.oracle数据库或mysql数据库(只有mysql数据库驱动需要先手动安装) 2.1.新建一个参数,随便设置file还是table类型之类的 2.2.点击Data ...