使用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的更多相关文章

  1. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor

    简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...

  2. Tensorflow学习笔记2019.01.22

    tensorflow学习笔记2 edit by Strangewx 2019.01.04 4.1 机器学习基础 4.1.1 一般结构: 初始化模型参数:通常随机赋值,简单模型赋值0 训练数据:一般打乱 ...

  3. Tensorflow学习笔记2019.01.03

    tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...

  4. TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]

    I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...

  5. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识

    深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...

  6. 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别

    深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...

  7. tensorflow学习笔记(4)-学习率

    tensorflow学习笔记(4)-学习率 首先学习率如下图 所以在实际运用中我们会使用指数衰减的学习率 在tf中有这样一个函数 tf.train.exponential_decay(learning ...

  8. tensorflow学习笔记(3)前置数学知识

    tensorflow学习笔记(3)前置数学知识 首先是神经元的模型 接下来是激励函数 神经网络的复杂度计算 层数:隐藏层+输出层 总参数=总的w+b 下图为2层 如下图 w为3*4+4个   b为4* ...

  9. tensorflow学习笔记(2)-反向传播

    tensorflow学习笔记(2)-反向传播 反向传播是为了训练模型参数,在所有参数上使用梯度下降,让NN模型在的损失函数最小 损失函数:学过机器学习logistic回归都知道损失函数-就是预测值和真 ...

  10. tensorflow学习笔记(1)-基本语法和前向传播

    tensorflow学习笔记(1) (1)tf中的图 图中就是一个计算图,一个计算过程.                                       图中的constant是个常量 计 ...

随机推荐

  1. amd、cmd、CommonJS以及ES6模块化

    AMD.CMD.CommonJs.ES6的对比 他们都是用于在模块化定义中使用的,AMD.CMD.CommonJs是ES5中提供的模块化编程的方案,import/export是ES6中定义新增的 什么 ...

  2. Unity WebGL

    路过弄了个unity Unity导出WebGL不支持c#socket和unity的network 可以用javascript的websocket实现... c#一般通过www从phpserver获取. ...

  3. zabbix-4.0-监控服务器的ping告警设置

    问题:一直在困惑如果一台服务器的网络发生故障或者断开时,怎么第一时间发现并去排查. 思路:利用zabbix平台监控服务器,监控ping这一项,设置一个报警,并使用脚本去提醒与通知,可使用邮件报警/短信 ...

  4. find 用正则表达式查找符合yyyy-mm-dd-bddd模式的目录

    yyyy-dd-mm-bddd模式解释: yyyy:年份,如2020 mm:月份,如03 dd:日期,如22 -b:意为备份,-b为固定字符串 ddd:三位序列号,从001~999 符合此格式的目录名 ...

  5. Linux下 ls 命令的高级用法8例

    Linux下 ls 命令的高级用法8例 在Linux下,ls这个命令大家肯定太熟悉了,良许相信只要是Linux工程师,每天都会离不开这个命令,而且一天会使用个几百次.但是,除了 ls -l 以外,你还 ...

  6. Vue中vue.config的配置

    vue-cli 3.x 脚手架搭建完成后,项目目录中没有 vue.config.js 文件,需要手动在根目录中创建 vue.config.js. vue.config.js 是一个可选的配置文件,如果 ...

  7. PS01

    基础学习:PS 平面设计:海报 影楼后期:婚纱照精修 UI设计: AI:是矢量图处理软件 矢量图:放大缩小后不会失真 使用方向:包装盒设计,logo设计,名片 ID使用方向:画册

  8. 如何在项目中使用composer的相关功能

    最近要在公司的magento项目中引用第三方库,用了composer来进行管理,composer还是非常方便的: 1.在应用的根目录下添加文件:composer.json {    "nam ...

  9. java序列化与反序列化总结

    很多商业项目用到数据库.内存映射文件和普通文件来完成项目中的序列化处理的需求,但是这些方法很少会依靠于Java序列化.本文也不是用来解释序列化的,而是一起来看看面试中有关序列化的问题,这些问题你很有可 ...

  10. Module build failed: TypeError: this.getResolve is not a function at Object.loader 使用vue-cli 创建项目 使用sass时报错 -- 等其他sass 报错 ./node_modules/css-loader?{"sourceMap":true}!./node_modules/vue-loader/lib

    已经安装了 sass相关依赖包 npm  install sass-loader --save-devnpm install node-sass --sava-dev 并且在build文件下webpa ...