赞
踩
一、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文档进一步了解
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。