当前位置:   article > 正文

深度学习基础之《TensorFlow框架(11)—数据读取》

深度学习基础之《TensorFlow框架(11)—数据读取》

一、TenorFlow读取文件方法

1、有三种获取数据到TensorFlow程序的方法

2、QueueRunner
基于队列的输入管道,从TensorFlow图形开头的文件中读取数据
注:TensorFlow2.0版本用tf.data模块代替了QueueRunner

3、Feeding
占位符 搭配 feed_dict使用
运行每一秒时,python代码提供数据

4、预加载数据
TensorFlow图中的张量包含所有数据(对于小数据集)

二、QueueRunner文件读取流程

1、第一阶段
构造文件名队列

2、第二阶段
读取与解码

3、第三阶段
批处理

4、手动开启线程

三、tf.data读取文件

1、tf.data的核心是tf.data.Dataset类

2、使用内存中的对象和张量创建数据集
(1)tf.data.Dataset.from_tensors()
读取单个元素数据集

(2)tf.data.Dataset.from_tensor_slices()
from_sensors生成一个仅包含单个元素的数据集。要将输入张量切片为多个元素,请使用from_sensor_slices

(3)例子
dataset = tf.data.Dataset.from_tensors([1, 2, 3])
dataset读取的是[array([1, 2, 3], dtype=int32)]

dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
dataset读取的是[1, 2, 3]三个元素

3、使用TFRecord格式创建数据集
tf.data.TFRocrdDataset()

4、使用文本文件创建数据集
tf.data.TextLineDataset()
其中每一行包含一个数据样本。一些示例包括日志消息,问题答案等

5、使用csv文件创建数据集
tf.data.experimental.CsvDataset()
tf.data.experimental.make_csv_dataset()提供更高级功能

6、数据集对象的预处理
tf.data.Dataset类为我们提供了多种数据集预处理方法

(1)Dataset.map(f)
对数据集中的每个元素应用函数f,得到一个新的数据集(这部分往往结合tf.io进行读写和解码文件,tf.image进行图像处理)

(2)Dataset.shuffle(buffer_size)
将数据集打乱(设定一个固定大小的缓冲区(Buffer),取出前buffer_size个元素放入,并从缓冲区中随机采样,采样后的数据用后续数据替换)

(3)Dataset.batch(batch_size)
将数据集分成批次,即对每batch_size个元素,使用tf.stack()在第0维合并,成为一个元素

(4)Dataset.prefetch()
预取出数据集中的若干个元素(可提升训练流程并行效率)

除此以外,还有Dataset.repeat()(重复数据集的元素)、Dataset.reduce()(与Map相对的聚合操作)、Dataset.take()(截取数据集中的前若干个元素)等,可参考API文档进一步了解
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/362044
推荐阅读
相关标签
  

闽ICP备14008679号